深入php函数file_get_contents超时处理的方法详解


Posted in PHP onJune 03, 2013

一.增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。真正的修改 file_get_contents延时可以用resource $context的timeout参数:

$opts = array(  
    'http'=>array(  
        'method'=>"GET",  
        'timeout'=>60,  
    )  );  
$context = stream_context_create($opts);       $html =file_get_contents('http://www.example.com', false, $context);

二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码:
$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http...'))===FALSE) $cnt++;
以上方法对付超时已经OK了。
有人发现了'method'=>”GET”,GET也可以设置成post,函数如下
   function Post($url, $post = null) 
   { 
       $context = array();       if (is_array($post)) { 
          ksort($post); 
           $context['http'] = array ( 
              'timeout'=>60, 
              'method' => 'POST', 
              'content' => http_build_query($post, '', '&'), 
            ); 
      } 
      return file_get_contents($url, false, stream_context_create($context)); 
   } 
   $data = array ( 
       'name' => 'test', 
       'email' => 'test@gmail.com', 
       'submit' => 'submit', 
   ); 
   echo Post('http://www.example.com', $data);

PHP 相关文章推荐
综合图片计数器
Oct 09 PHP
文件上传程序的全部源码
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
PHP 编写大型网站问题集
May 07 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 #PHP
PHP CLI模式下的多进程应用分析
Jun 03 #PHP
基于php-fpm 参数的深入理解
Jun 03 #PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 #PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 #PHP
php cli模式学习(PHP命令行模式)
Jun 03 #PHP
获取PHP警告错误信息的解决方法
Jun 03 #PHP
You might like
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
javascript实现简易计算器
2017/02/01 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
python小项目之五子棋游戏
2019/12/26 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
出国留学自荐信
2013/10/25 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
成龙洗发水广告词
2014/03/14 职场文书
股权转让协议书
2014/04/12 职场文书
组工干部演讲稿
2014/09/02 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
拖欠货款起诉状
2015/05/20 职场文书
教师旷工检讨书
2015/08/15 职场文书
高二化学教学反思
2016/02/22 职场文书