如何修复连接超时,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_timeouttimeout。错误很明显,你 没有足够的时间得到回应。在 php.ini 中增加时间

我尝试将 php.ini 中的 ma​​x_execution_timedefault_socket_timeout 都增加到 500,但我遇到了同样的错误。然后我尝试手动添加 read_timeout=500timeout=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 毫秒后超时

如何区分 curl 最大时间和连接超时?

如何修复颤振中的“SocketException:os错误:连接超时错误号110,地址= 000.000.0.00,端口= 44935”

如何修复颤振中的“SocketException:OS错误:连接超时,errno = 110,地址= 192.168.5.10,端口= 49590”错误

Linux下CURL设置请求超时时间

如何在Laravel中修复PDO sqlsrv连接超时?