多年来,我有几个电报机器人运行得很好;我使用了两种方式向Bot发送请求:
第一个是:
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
,但是它可以很好地处理其他网站的请求;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的请求工作得很好。
发生了什么事,如何解决?
发布于 2019-08-16 13:43:20
这可能是因为Curl试图反向DNS,并且由于它失败了,所以它只是等待超时,所以您可以这样修复它:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 )
https://stackoverflow.com/questions/57520884
复制相似问题