首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么cURL对Telegram Bot的请求突然变得非常缓慢?

为什么cURL对Telegram Bot的请求突然变得非常缓慢?
EN

Stack Overflow用户
提问于 2019-08-16 07:57:06
回答 1查看 891关注 0票数 3

多年来,我有几个电报机器人运行得很好;我使用了两种方式向Bot发送请求:

第一个是:

代码语言:javascript
运行
复制
file_get_contents($url);

第二个是:

代码语言:javascript
运行
复制
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_TIMEOUT => 60
]);
curl_exec($ch);

几天前我注意到:

  1. file_get_contents()每次都停止完全返回failed to open stream: Connection timed out,但是它可以很好地处理其他网站的请求;
  2. cURL继续工作,但速度非常慢:在我向机器人发送消息之后,我等待5-8秒才能收到答案;当我将CURLOPT_CONNECTTIMEOUT更改为1时,等待时间缩短到1秒左右。

file_get_contents()已经开始像以前一样使用这个context

代码语言:javascript
运行
复制
file_get_contents($url, false, stream_context_create([
    'socket' => [
        'bindto' => '0:0'
    ]
]));

last_error_message总是Read timeout expired。服务器重新启动没有帮助。从浏览器直接对Bot的请求工作得很好。

发生了什么事,如何解决?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 13:43:20

这可能是因为Curl试图反向DNS,并且由于它失败了,所以它只是等待超时,所以您可以这样修复它:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57520884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档