Ces*_*sar 14 php file-get-contents connection-timeout
$url = 'http://a.url/i-know-is-down';
//ini_set('default_socket_timeout', 5);
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 5,
'ignore_errors' => true
)
)
);
$start = microtime(true);
$content = @file_get_contents($url, false, $ctx);
$end = microtime(true);
echo $end - $start, "\n";
Run Code Online (Sandbox Code Playgroud)
我得到的反应一般是21.232 segs,不应该是大约5秒???
取消注释ini_set行根本没有帮助.
Fan*_*nis 15
您正在设置读取超时socket_create_context.如果您尝试访问的页面不存在,那么服务器将允许您连接并为您提供404.但是,如果该站点不存在(将无法解析或后面没有Web服务器),那么file_get_contents()将忽略读取超时,因为它还没有超时连接到它.
我认为你不能设置连接超时file_get_contents.我最近重写了一些代码,fsockopen()因为它允许你指定连接超时
$connTimeout = 30 ;
$fp = fsockopen($hostname, $port, $errno, $errstr, $connTimeout);
Run Code Online (Sandbox Code Playgroud)
进入fsockopen的当然会要求你fread()循环使用它,稍微复杂一下你的代码.但是,它确实可以让您在使用时从中读取读取超时时检测读取超时stream_get_meta_data()
http://php.net/stream_get_meta_data
| 归档时间: |
|
| 查看次数: |
12838 次 |
| 最近记录: |