2016-12-26 69 views
0

我正在用curl_multi_exec做一些請求。我的代碼如下所示:有時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

問題出在Apache和fgi的配置錯誤。增加超時問題後消失(apache的timeout,fcgi的FcgidIOTimeoutFcgidBusyTimeout)。