Ekleyelim curl_multi_add_handle sırasında PHP cURL Uyarı

4 Cevap

Benim PHP kodu

    $urlArray = array('http://firsturl.com', 'http://secondurl.com');
    $nodeCount = count($urlArray);
    $chContainter = array();
    $mh = curl_multi_init();
    for($i = 0; $i < $nodeCount; $i++) {
        $chContainter[$i] = curl_init();
        curl_setopt($chContainter[$i], CURLOPT_URL, $urlArray[$i]);
        curl_setopt($chContainter[$i], CURLOPT_HEADER, 0);
        curl_setopt($chContainter[$i], CURLOPT_RETURNTRANSFER,1);
        curl_multi_add_handle($mh,$chContainter[$i]);
    } 

şu uyarıyı oluşturuyor

Warning: (null)(): 4 is not a valid cURL handle resource in Unknown on line 0

Warning: (null)(): 5 is not a valid cURL handle resource in Unknown on line 0

Bazı hata ayıklama yaptım ve $ mh kıvırmak tanıtıcı eklemeye çalıştığınızda uyarı oluşturulan öğrendim.

Lütfen yardım edin. Teşekkürler.

4 Cevap

Aksi takdirde o hatayı alırsınız, emin size curl_init() oturumları başlatıldıktan sonra curl_multi_init() başlatmak olun.

Ben sadece kendi senaryolarından biri bu sorunu çözüldü. Sorun, örneğin, şifresiz alanları ile URL'ler neden oldu: http://example.com/space here/. http://example.com/space%20here/: Ben öyle gibi,% 20 ile herhangi bir düz alan değiştirerek sorunu çözüldü

Bu hata URL ulaşılmaz ya da bozuk kılan herhangi bir nedenle oluşabilir gibi diğer online okuma, öyle görünüyor.

In manual (see example #1) shows that curl_multi_init() calls after curl_init(). So this should work:

$urlArray = array('http://firsturl.com', 'http://secondurl.com');
$nodeCount = count($urlArray);
$chContainter = array();
for ($i = 0; $i < $nodeCount; $i++) {
    $chContainter[$i] = curl_init();
    curl_setopt($chContainter[$i], CURLOPT_URL, $urlArray[$i]);
    curl_setopt($chContainter[$i], CURLOPT_HEADER, 0);
    curl_setopt($chContainter[$i], CURLOPT_RETURNTRANSFER,1);
}

$mh = curl_multi_init();
for ($i = 0; $i < $nodeCount; $i++) {
    curl_multi_add_handle($mh,$chContainter[$i]);
}

Çok şık, ama bu benim benzer bir sorun çözülmüş değil.

Ben sadece bu sorunla karşılaşırsanız

benim kod:

$url = 'www.meilishuo.com';
$queue = curl_multi_init();
$ci = createCh($url);
$ciSec = createCh($url);
curl_multi_add_handle($queue, $ci);
curl_multi_add_handle($queue, $ciSec);

function createCh($url) {
    $ci = curl_init();
    /* Curl settings */
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ci, CURLOPT_NOSIGNAL,1);
    curl_setopt($ci, CURLOPT_TIMEOUT, 1);
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ci, CURLOPT_HEADER, 0);
    curl_setopt($ci, CURLOPT_URL, $url);
    curl_setopt($ci, CURLOPT_FOLLOWLOCATION,1);
    return $ci;
}

Uyarı:

PHP Warning: (null) (): 34 satır 0 üzerine Unknown geçerli bir cURL tanıtıcısı kaynak değil

PHP Warning: (null) (): 35 satır 0 üzerine Unknown geçerli bir cURL tanıtıcısı kaynak değil

PHP Warning: (null) (): 34 satır 0 üzerine Unknown geçerli bir cURL tanıtıcısı kaynak değil

PHP Warning: (null) (): 35 satır 0 üzerine Unknown geçerli bir cURL tanıtıcısı kaynak değil

düzeltme:

Sonunda da bunu ekleyin:

    curl_multi_close($queue);

sorun çözüldü, ama ben eklemek sonra çözüldü neden anlamıyorum.

ne anlamı var?

"Satırında 0 Bilinmeyen" (uyarı bölümü)