如何修复连接超时,cURL 错误 28?
Posted
技术标签:
【中文标题】如何修复连接超时,cURL 错误 28?【英文标题】:How to fix Connection timed out, cURL error 28? 【发布时间】:2019-06-25 03:50:38 【问题描述】:我购买了一个工作门户脚本,我已成功安装它,但当我尝试注册时出现此错误:
cURL 错误 28:连接在 2013 毫秒后超时(请参阅 http://curl.haxx.se/libcurl/c/libcurl-errors.html)
我请求支持,他们说:
您需要增加 read_timeout 和 timeout。错误很明显,你 没有足够的时间得到回应。在 php.ini 中增加时间
我尝试将 php.ini 中的 max_execution_time、default_socket_timeout 都增加到 500,但我遇到了同样的错误。然后我尝试手动添加 read_timeout=500 和 timeout=500 并再次出现同样的错误。
我该怎么办?
【问题讨论】:
“尝试手动添加 read_timeout”是什么意思?错误消息显示 cURL 仅允许 2 秒连接并读取整个响应。在发送请求之前将这些超时值设置为 cURL,例如在 PHP 中,这将在 cURL 处理程序或命令行上设置CURLOPT_TIMEOUT
和/或 CURLOPT_CONNECTTIMEOUT
,传递 --max-time
和/或 --connect-timeout
。
感谢回复,我是否在 php.ini 中设置了 CURLOPT_TIMEOUT?
不,你在 curl 处理程序执行之前设置它。例如。 $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 30); [...]; curl_exec($ch)
不知道 curl 处理程序在哪里
【参考方案1】:
CURLE_OPERATION_TIMEDOUT (28)
操作超时。根据条件达到指定的超时时间
您可以使用以下方法设置 cURL 传输的总时间:
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
其中 500 是允许 cURL 函数执行的最大秒数。
这是一个初始化新 cURL 会话并获取网页的示例:
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>
【讨论】:
这将如何在 IIS 服务器上完成?具体来说,Windows Server 2019 上的 IIS10?使用 Facebook Debugger/Scraper 工具时,我遇到了完全相同的超时错误。【参考方案2】:也许你应该启用stream_socket_server
【讨论】:
以上是关于如何修复连接超时,cURL 错误 28?的主要内容,如果未能解决你的问题,请参考以下文章
下载失败。 cURL 错误 28:连接在 10001 毫秒后超时
如何修复颤振中的“SocketException:os错误:连接超时错误号110,地址= 000.000.0.00,端口= 44935”
如何修复颤振中的“SocketException:OS错误:连接超时,errno = 110,地址= 192.168.5.10,端口= 49590”错误