2011-05-21 33 views
9

Czy można ustawić opcję ponowienia na timeouts w PHP cURL?cURL spróbuj ponownie w PHP

Wiem, że mogę to zrobić, kodując go, aby ponowić próbę po awarii, po prostu zastanawiając się, czy jest jakiś sposób, aby to zrobić za pomocą opcji.

+0

[Lisy wszystkich opcji curl] (http://php.net/manual/en/function.curl-setopt.php) – sdleihssirhc

+0

Najlepszym sposobem byłoby ponowienie próby w przypadku niepowodzenia – Ibu

Odpowiedz

2

Nie z bieżącymi opcjami dostępnymi dla rozszerzenia PHP cURL. W wierszu poleceń uważam, że istnieje opcja --retry, ale nie jest ona narażona na PHP.

12

można użyć errno aby ponowić próbę tak:

$curl = curl_init(); 
curl_setopt_array($curl, $options); 
$response = curl_exec($curl); 
$retry = 0; 
while(curl_errno($curl) == 28 && $retry < 3){ 
    $response = curl_exec($curl); 
    $retry++; 
} 

$error_codes=array(
    [1] => 'CURLE_UNSUPPORTED_PROTOCOL', 
    [2] => 'CURLE_FAILED_INIT', 
    [3] => 'CURLE_URL_MALFORMAT', 
    [4] => 'CURLE_URL_MALFORMAT_USER', 
    [5] => 'CURLE_COULDNT_RESOLVE_PROXY', 
    [6] => 'CURLE_COULDNT_RESOLVE_HOST', 
    [7] => 'CURLE_COULDNT_CONNECT', 
    [8] => 'CURLE_FTP_WEIRD_SERVER_REPLY', 
    [9] => 'CURLE_REMOTE_ACCESS_DENIED', 
    [11] => 'CURLE_FTP_WEIRD_PASS_REPLY', 
    [13] => 'CURLE_FTP_WEIRD_PASV_REPLY', 
    [14]=>'CURLE_FTP_WEIRD_227_FORMAT', 
    [15] => 'CURLE_FTP_CANT_GET_HOST', 
    [17] => 'CURLE_FTP_COULDNT_SET_TYPE', 
    [18] => 'CURLE_PARTIAL_FILE', 
    [19] => 'CURLE_FTP_COULDNT_RETR_FILE', 
    [21] => 'CURLE_QUOTE_ERROR', 
    [22] => 'CURLE_HTTP_RETURNED_ERROR', 
    [23] => 'CURLE_WRITE_ERROR', 
    [25] => 'CURLE_UPLOAD_FAILED', 
    [26] => 'CURLE_READ_ERROR', 
    [27] => 'CURLE_OUT_OF_MEMORY', 
    [28] => 'CURLE_OPERATION_TIMEDOUT', 
    ....