2011-05-21 53 views
9

是否可以設置在PHP cURL中超時重試的選項?cURL在PHP中重試

我知道我可以做到這一點,編碼它重試失敗,只是想知道是否有辦法通過一個選項來做到這一點。

+0

[全部捲曲選項lisy(http://php.net/manual/en/function.curl-setopt.php) – sdleihssirhc 2011-05-21 07:49:42

+0

最好的辦法是重試失敗 – Ibu 2011-05-21 07:54:33

回答

2

不適用於PHP cURL擴展可用的當前選項。在命令行上,我相信有--retry選項,但不會暴露給PHP。

12

您可以使用errno爲重試這樣的:

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