PHP curl 连接超时错误

标签 php curl php-curl

我在 PHP 中使用 curl 调用 API,有时它工作正常,有时我得到 Failed to connect to api-domain.com port 80: Connection timed out

有点奇怪,有时它能工作,有时却不能。要解决我打印的 curl_getinfo() 无法正常工作的问题,请在下方检查。

它显示连接时间 = 0 和总时间 = 130 秒,我不太确定这是什么意思。如果有人对此有很好的了解,请查看以下日志并帮助我了解确切的问题是什么。

[url] => http://api-domain.com/?act=get_story_banners
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 630
[req   uest_size] => 283
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 130.335916
[namelookup_time] => 0.000016
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 744
[speed_download] => 13814
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] => 
[primary_ip] => 34.231.133.7
[certinfo] => Array()
[primary_port] => 80
[local_ip] => xxx.xxx.xxx.xxx
[local_port] => 48080

提前致谢!

编辑

有时 curl 请求会到达 REST API 服务器,有时不会。它在连接级别本身被丢弃,不会到达 REST API 服务器。我对为什么有时连接有时不连接感到有点困惑。

最佳答案

引用curl_getinfo()的文档, connect_time 是建立最后一个连接所用的时间(以秒为单位),total_time 是最后一个事务的时间(以秒为单位)。

您可以使用 curl_setopt() 重新定义超时.例如,curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 42); 设置 42 秒的连接 超时或curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 0); 没有连接超时。同样,curl_setopt($cHandler, CURLOPT_TIMEOUT, 42); 将定义 42 秒的执行超时。

关于PHP curl 连接超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50836796/

相关文章:

php - 如何在 HTTP/1.1 中使用 PHP cURL

php - 从 PHP 对象获取 cURL 命令

php - 如何使用 jQuery 仅通过单击 "a"标签获取文本

php - 使用 Guzzle 删除带有参数的请求

php - Jquery Ajax 和 PHP MVC 模型

Node.js 10 HTTPS 服务器拒绝连接

php - cURL 有时不工作并给出空结果

php - 如何检查另一个数组数组中是否存在相似数组

PHP CURL CURLOPT_SSL_VERIFYPEER 被忽略

php - 无法定位包 php5-curl