Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Premier Energy se listeaza la bursa

Unde recomandati un CT cu Casa de...

Adaptare masina pentru o persoana...

Bios laptop Myria MY8315
 Folie display laptop in Bucuresti?

Pagina Wikipedia

Incalzire cu Boiler cu PDC + IPAT...

Salariu de șofer Uber 8000 l...
 Problema token semnatura electron...

Incarcator diy China

Unde au disparut tancurile federa...

RMN Decontat
 Jgheab clasic forma "U"- ...

Reparatie plafoniera LED

Problema PC - se blocheaza sau re...

Notebook HP 840G2 - Upgrade RAM, ...
 

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,424
  • Î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,258
  • Î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