有时curl_multi_exec重复请求

时间:2016-12-26 11:36:42

标签: php curl

我正在用curl_multi_exec做一些请求。我的代码如下所示:

$rMultiHandler = curl_multi_init();

//next lines are repeated for several resources
$rResource = curl_init();       
curl_setopt($rResource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($rResource, CURLOPT_URL, $url);
curl_setopt($rResource, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($rResource, CURLOPT_TIMEOUT, 1800);
curl_setopt($rResource, CURLOPT_SSL_VERIFYPEER, false);
curl_multi_add_handle($rMultiHandler, $rResource);
//-----------------------

$iRunningProcesses = null;
do {
    curl_multi_exec($rMultiHandler, $iRunningProcesses);
    usleep(100000);
} while ($iRunningProcesses > 0);

//do some work with received data;

curl_multi_close($rMultiHandler);

问题是这些请求很耗时(5-10分钟)。有时这些请求中的一个(最长的)重复两次。好像curl等待一段时间才能获得数据,没有收到任何内容并重复请求。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题出在Apache和fсgi的错误配置中。增加超时后问题消失了(timeout表示apache,FcgidIOTimeoutFcgidBusyTimeout表示fcgi)。