深入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 相关文章推荐
php下过滤HTML代码的函数
Dec 10 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
php Session存储到Redis的方法
Nov 04 PHP
PHP递归删除目录几个代码实例
Apr 21 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP创建XML接口示例
Jul 04 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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 MSSQL 存储过程的方法
2008/12/24 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP xpath()函数讲解
2019/02/11 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
Python合并多个装饰器小技巧
2015/04/28 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
详解Python中heapq模块的用法
2016/06/28 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
python正则表达式实例代码
2020/03/03 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
竞选班长自荐书范文
2014/03/09 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
大雁塔导游词
2015/02/04 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang