Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Valabilitate permis auto cat. A s...

Caramida aparenta peste termosistem

Linistea din timpul penelor de cu...

Achiziție laptop baterie det...
 Cenzura in masa comentarii youtube

Inscriere copil la scoala in Roma...

exista adaptoare pentru baterii P...

Sa folosim antivirus, antimalware?
 SMS suspect livrare "posta ro...

Film original sau pirat?

Cum poti inregistra CD-uri in for...

Ceainaria celor pasionați de...
 Probleme la acoperis din cauza in...

Transferuri instant intre bancile...

player video cu preview cadru pe ...

Carrefour Act for good
 

Curl multi init

- - - - -
  • Please log in to reply
2 replies to this topic

#1
phpguru

phpguru

    Junior Member

  • Grup: Members
  • Posts: 127
  • Înscris: 12.07.2012
Codul de mai jos consuma resurse cpu. M-am documentat si pe diferite site-uri, usleep cica ar calma problema.

$urls = ["https://wlog.ro/stiri.php" => "wlog.txt", "https://forum.softpedia.com/rss/forums/1-forumul-softpedia-rss-global/" => "softpedia.txt"] ;
$curls = [] ;
$curl_multi = curl_multi_init() ;
foreach ( $urls as $from => $to ) {
$curl[$from] = curl_init() ;
curl_setopt( $curl[$from], CURLOPT_URL, $from ) ;
curl_setopt( $curl[$from], CURLOPT_REFERER, "https://www.google.com" ) ;
curl_setopt( $curl[$from], CURLOPT_AUTOREFERER, true ) ;
curl_setopt( $curl[$from], CURLOPT_USERAGENT, "Mozilla/5.0" ) ;
curl_setopt( $curl[$from], CURLOPT_HEADER, false ) ;
curl_setopt( $curl[$from], CURLOPT_RETURNTRANSFER, true ) ;
curl_setopt( $curl[$from], CURLOPT_FOLLOWLOCATION, true ) ;
curl_setopt( $curl[$from], CURLOPT_TIMEOUT, 20 ) ;
curl_setopt( $curl[$from], CURLOPT_CONNECTTIMEOUT, 15 ) ;
curl_setopt( $curl[$from], CURLOPT_SSL_VERIFYPEER, false ) ;
curl_multi_add_handle( $curl_multi, $curl[$from] ) ;
$curls[] = $curl[$from] ;
}
$active = null ;
do {
$status = curl_multi_exec( $curl_multi, $active ) ;
} while ( $status == CURLM_CALL_MULTI_PERFORM ) ;
while ( $active && $status == CURLM_OK ) {
if ( curl_multi_select( $curl_multi ) == -1 ) {
continue ; // usleep(1);
}
do {
$status = curl_multi_exec( $curl_multi, $active ) ;
} while ( $status == CURLM_CALL_MULTI_PERFORM ) ;
}
foreach ( $urls as $from => $to ) {
$magic[$from] = curl_multi_getcontent( $curl[$from] ) ;
curl_multi_remove_handle( $curl_multi, $curl[$from] ) ;
curl_close( $curl[$from] ) ;
$file = fopen( $to, "w" ) or die( "Eroare: fisierul nu poate fi deschis." ) ;
fputs( $file, $magic[$from] ) ;
fclose( $file ) ;
}
curl_multi_close( $curl_multi ) ;


Am anulat continue; si am adaugat usleep(1) sau usleep(100) sau usleep(1000) sau usleep(10000), in zadar. E codul scris gresit sau imi scapa ceva?

Edited by phpguru, 23 July 2023 - 19:58.


#2
modoran

modoran

    Senior Member

  • Grup: Senior Members
  • Posts: 8,241
  • Înscris: 08.02.2011
Ai neaparat nevoie sa rulezi alea simultan ? Nu poti sa schimbi codul cu cate o conexiune pe rand ? Ar fi mai simplu si nu ar consuma resurse.

Dar alea ar trebui sa le rulezi odata la un anumit timp in mod independent, nu la fiecare accesare a paginii sa le preiei iar ...

file_get_contents face exact ce vrei tu din 2 linii de cod ...

Edited by modoran, 23 July 2023 - 20:20.


#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,114
  • Înscris: 24.02.2007
Exemplul din manual are un singur do/while: https://www.php.net/...-multi-exec.php

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate