2016-12-26 18 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分)。そして時々これらの要求の1つ(最長)が2回繰り返されます。それは、データのためにしばらく待っているように見え、何も受信せず、要求を繰り返す。 この現象を修正するにはどうすればよいですか?

答えて

0

問題は誤った構成のApacheおよびfosです。タイムアウトを増やした後、問題はなくなりました(apacheの場合はtimeout、fcgiの場合はFcgidIOTimeoutおよびFcgidBusyTimeout)。

関連する問題