2011-05-21 6 views
9

PHP cURL'de zaman aşımlarını tekrar deneme seçeneği ayarlanabilir mi?cURL PHP'de yeniden deneme

Bunu, başarısızlıkla yeniden denemek için kodlayarak yapabilirim, yalnızca bir seçeneğiyle bunu yapmanın bir yolu olup olmadığını merak ediyorum.

+0

[Tüm bukle seçeneklerinin lisy] (http://php.net/manual/en/function.curl-setopt.php) – sdleihssirhc

+0

Başarısızlığı yeniden denemek için en iyi yol olurdu – Ibu

cevap

2

PHP cURL uzantısının kullanabileceği mevcut seçeneklerle değil. Komut satırında --retry seçeneğinin olduğuna inanıyorum ama bu PHP'ye maruz kalmıyor.

12

böyle yeniden denemek errno kullanabilirsiniz:

$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', 
    ....