PHP file_get_contents忽略超时?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP file_get_contents忽略超时?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$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";

我得到的回复一般是21.232 segs,不应该是大约五秒

取消注释ini_set行根本没有帮助.

您正在使用socket_create_context设置读取超时.如果您尝试访问的页面不存在,则服务器将允许您连接并给您一个404.但是,如果该站点不存在(将不会解析或没有Web服务器在后面),那么file_get_contents( )将忽略读取超时,因为它甚至没有超时连接到它.

我不认为你可以在file_get_contents中设置连接超时.我最近重写了一些代码来使用fsockopen(),正是因为它允许你指定connect timeout

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

那么去fsockoPEn的方法需要你再循环一遍fread(),稍微复制你的代码.但是,当您使用stream_get_Meta_data()读取时,会检测到读取超时,

http://php.net/stream_get_meta_data

脚本宝典总结

以上是脚本宝典为你收集整理的PHP file_get_contents忽略超时?全部内容,希望文章能够帮你解决PHP file_get_contents忽略超时?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。