php - PHP 中的 cURL 重试

标签 php curl libcurl

是否可以在 PHP cURL 中设置超时重试选项?

我知道我可以通过编码以在失败时重试来做到这一点,只是想知道是否有某种方法可以通过选项来做到这一点。

最佳答案

您可以使用 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',
    ....

关于php - PHP 中的 cURL 重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080369/

相关文章:

javascript - Ajax 只运行一次

php - 表中显示重复记录

php - 如何使用递归用户定义函数模拟 array_reverse()?

macos - curl -i 和 curl -I 返回不同的结果

C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)

php - Laravel 中的电子邮件验证规则

curl - 如何使用 curl 从命令行界面 (CLI) 调用 Mule 的文件入站端点?

linux - 为什么通过执行 'curl -r' 输出文件超过一个字节

c++ - 如何解决 C++Builder 中的链接器错误 "LIBCURL.LIB contains invalid OMF record, type 0x21 (possibly COFF) "?

java - android 上的 libcurl CURLE_SSL_CACERT_BADFILE 错误