我正在用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等待一段时间才能获得数据,没有收到任何内容并重复请求。 我该如何解决这个问题?
答案 0 :(得分:0)
问题出在Apache和fсgi的错误配置中。增加超时后问题消失了(timeout
表示apache,FcgidIOTimeout
和FcgidBusyTimeout
表示fcgi)。