PHP Multi-Curl请求,在等待响应时执行一些工作

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

下面是一个典型的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 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放在前面。您可以自己运行代码,发现它没有按预期工作。