Curl_multi_exec如何在多个IP地址上执行它并获得响应头


curl_multi_exec how to execute it on several ip adresses and get response headers

你好,我在一个ip上做了一个curl测试,我可以得到响应信息(时间,响应代码,…)这次我想让它在几个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);)

)

你可能需要PHP cURL class With多线程
在这里下载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]