Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] multi curl, curl_multi_select zawsze zwraca wartosc -1
Forum PHP.pl > Forum > Przedszkole
Octobus
Cos zmienili mi na serwerze i multicurl zaczal mi zwracac zawsze przy curl_multi_select wartosc -1 (oczekuje na wykonanie). Przykladowy kod przeklejony z manuala


Kod
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "https://www.google.pl/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }else{
        echo '.';
        sleep(1);
    }
}

//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);


caly czas zwraca mi ... i nigdy nie dochodzi do konca. curl_multi_select($mh) zawsze zwraca -1. To jest przykladowy kod, moj jest bardziej rozbudowany i sprawdza url'e ktore na pewno dzialaja ale zawsze jest ten sam status ...
Pyton_000
  1. while ($active && $mrc == CURLM_OK) {
  2. if (curl_multi_select($mh) != -1) {
  3. echo '.';
  4. sleep(1);
  5. }
  6. do {
  7. $mrc = curl_multi_exec($mh, $active);
  8. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  9. }

o tak zobacz
Octobus
Gdyby komus sie przydalo, ponizej zamieszczam przykladowy kod ktory dziala i odbiera zawartosci pliku. Jakby ktos widzial bledy, bede bardzo wdzieczny za sugestie
Kod
while ($active && $mrc == CURLM_OK) {
    curl_multi_select($mh);
    
    do {
        $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
    if ($mhinfo = curl_multi_info_read($mh)) {
        $response = curl_multi_getcontent($mhinfo['handle']);
        echo PHP_EOL.'Zawartosc watku: '.$response.'####';
    }
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.