你好,我在一个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]