curl_multi_exec как выполнить его на нескольких IP-адресах и получить заголовки ответа - PullRequest
0 голосов
/ 17 августа 2011

Здравствуйте, я сделал тест локона на ip и смог получить информацию о ответе (время, код ответа, ...) на этот раз я хочу, чтобы он работал на нескольких IP-адресов одновременно. Я обнаружил, что это возможно с помощью curl_multi_exec, и нашел этот код:

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

// set URL and other appropriate options
        curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
        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);

        $running = null;
//execute the handles
        do {
            curl_multi_exec($mh, $running);
        } while ($running > 0);


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

Но я получаю содержимое дыры только в последнем введенном URL (CURLOPT_URL, "http://www.php.net/") и кроме того, я хочу, чтобы информация о запросе и ответе (в curl я использовал ($infos = curl_getinfo($curl);)

1 Ответ

0 голосов
/ 17 августа 2011

Вам, вероятно, нужен Класс PHP cURL с многопоточностью
Получить здесь http://pastebin.com/vBgYDzVu или здесь http://semlabs.co.uk/assets/files/curl.zip

Пример:

    include "curl.php";

    $curl = new CURL();
    $optsA = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true,
 CURLOPT_HEADER => 0 );
    $optsB = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => 0 );
    $curl->addSession( "http://siteA.com/scriptA.php", $optsA );
    $curl->addSession( "http://siteB.com/scriptB.php", $optsB );
    $curl->addSession( "http://siteC.com/scriptC.php", $opts );
    $curl->addSession( "http://siteD.com/scriptD.php", $opts );
    $curlresult = $curl->exec();
    $curl->clear();

    $siteA = $curlresult[0]
    $siteB = $curlresult[1]
    $siteC = $curlresult[2]
    $siteD = $curlresult[3]
...