PHP Multi-Curl请求,在等待响应时执行一些工作
下面是一个典型的PHP多卷曲请求示例:PHP Multi-Curl请求,在等待响应时执行一些工作,php,curl,Php,Curl,下面是一个典型的PHP多卷曲请求示例: $mh = curl_multi_init(); foreach ($urls as $index => $url) { $curly[$index] = curl_init($url); curl_setopt($curly[$index], CURLOPT_RETURNTRANSFER, 1); curl_multi_add_handle($mh, $curly[$index]); } // execute the h
$mh = curl_multi_init();
foreach ($urls as $index => $url) {
$curly[$index] = curl_init($url);
curl_setopt($curly[$index], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $curly[$index]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while($running > 0);
// get content and remove handles
$result = array();
foreach($curly as $index => $c) {
$result[$index] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
// all done
curl_multi_close($this->mh);
该过程包括3个步骤:
1.准备数据
2.发送请求并等待它们完成
3.收集回应
我想将步骤2分为两部分,首先发送所有请求,然后收集所有响应,并做一些有用的工作,而不是仅仅等待,例如,处理最后一组请求的响应
那么,我如何分割这部分代码呢
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while($running > 0);
分成不同的部分
发送所有请求
在等待的时候再做一些工作
检索所有响应
我试着这样做:
// Send the requests
$running = null;
curl_multi_exec($mh, $running);
// Do some job while waiting
// ...
// Get all the responses
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while($running > 0);
但是它似乎不能正常工作。我找到了解决方案,下面是如何在不等待响应的情况下启动所有请求
do {
curl_multi_exec($mh, $running);
} while (curl_multi_select($mh) === -1);
然后我们可以做任何其他工作,并在以后的任何时候捕获响应。您能详细描述一下哪些工作似乎不正常?响应在第二个周期中还没有准备好吗。。。即使把睡眠10放在前面。您可以自己运行代码,发现它没有按预期工作。