深入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
PHP新手入门学习方法
May 08 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
PHP生成压缩文件实例
Feb 07 PHP
php 类自动载入的方法
Jun 03 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 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
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
javascript常用函数(2)
2015/11/05 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
初步探究Python程序的执行原理
2015/04/11 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python对List中的元素排序的方法
2018/04/01 Python
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
超市店庆活动方案
2014/08/31 职场文书
高考升学宴答谢词
2015/01/20 职场文书
教师岗位职责范本
2015/04/02 职场文书
社区节水倡议书
2015/04/29 职场文书
付款证明格式范文
2015/06/19 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android