我有几个 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 效果很好。
发生了什么以及如何解决?
一只萌萌小番薯