为了账号安全,请及时绑定邮箱和手机立即绑定

为什么对 Telegram Bot API 的 cURL 请求突然变得很慢?

为什么对 Telegram Bot API 的 cURL 请求突然变得很慢?

PHP
慕的地10843 2021-11-26 15:41:47
我有几个 Telegram 机器人工作多年;我使用了 2 种方式向 Bot API 发送请求:第一个是:file_get_contents($url);第二个是:$ch = curl_init($url);curl_setopt_array($ch, [    CURLOPT_RETURNTRANSFER => true,    CURLOPT_CONNECTTIMEOUT => 10,    CURLOPT_TIMEOUT => 60]);curl_exec($ch);几天前,我注意到:file_get_contents()停止工作,failed to open stream: Connection timed out每次都完全返回,但它可以很好地处理对其他网站的请求;cURL 继续工作,但速度很慢:在我向机器人发送消息后,我等待 5-8 秒才能收到答复;当我改变CURLOPT_CONNECTTIMEOUT到1等待期间减小到1秒左右。file_get_contents()已经开始像以前一样工作了context:file_get_contents($url, false, stream_context_create([    'socket' => [        'bindto' => '0:0'    ]]));在last_error_message始终Read timeout expired。服务器重启没有帮助。从浏览器直接请求 Bot API 效果很好。发生了什么以及如何解决?
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 )


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信