2016-12-26 1 views
0

Ich mache einige Anfragen mit curl_multi_exec. Mein Code sieht so aus:Manchmal curl_multi_exec wiederhole Anfragen

$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); 

Das Problem ist, dass diese Anfragen zeitaufwendig sind (5-10 Minuten). Und manchmal wird eine dieser Anfragen (die längste) zweimal wiederholt. Es scheint so, als würde Curl eine Weile auf Daten warten, erhält nichts und wiederholt die Anfrage. Wie kann ich dieses Verhalten beheben?

Antwort

0

Das Problem war in der falschen Konfiguration Apache und fсgi. Nach der Erhöhung der Timeouts ging das Problem weg (timeout für Apache, FcgidIOTimeout und FcgidBusyTimeout für fcgi).

Verwandte Themen