PHP file_get_contents ignoring timeout?

徘徊边缘 提交于 2019-11-27 23:36:54

You are setting the read timeout with socket_create_context. If the page you are trying to access doesn't exist then the server will let you connect and give you a 404. However, if the site doesn't exist (won't resolve or no web server behind it), then file_get_contents() will ignore read timeout because it hasn't even timed out connecting to it yet.

I don't think you can set the connection timeout in file_get_contents. I recently rewrote some code to use fsockopen() exactly because it lets you specify connect timeout

$connTimeout = 30 ;
$fp = fsockopen($hostname, $port, $errno, $errstr, $connTimeout);

Ofcourse going to fsockopen will require you to then fread() from it in a loop, compicating your code slightly. It does give you more control, however, on detecting read timeouts while reading from it using stream_get_meta_data()

http://php.net/stream_get_meta_data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!