2011-05-21 15 views
9

PHP cURLでタイムアウトを再試行するオプションを設定することはできますか?cURL PHPで再試行

私は、失敗したときに再試行するためにコーディングすることでこれを行うことができます。オプションを使用する方法があるかどうか疑問に思っています。

+0

[すべてのカールオプションのlisy](http://php.net/manual/en/function.curl-setopt.php) – sdleihssirhc

+0

最善の方法は失敗時に再試行することです – Ibu

答えて

2

PHP cURL拡張機能で使用できるオプションはありません。コマンドラインで私は--retryオプションがあると信じていますが、それはPHPに公開されていません。

12

あなたは、このように再試行するエラー番号を使用することができます。

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