深入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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
PHP 代码规范小结
Mar 08 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
tp5修改(实现即点即改)
Oct 18 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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 foreach循环使用详解与实例代码
2010/05/08 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
动态加载js的几种方法
2006/10/23 Javascript
addRule在firefox下的兼容写法
2006/11/30 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Python双链表原理与实现方法详解
2020/02/22 Python
python实现图像拼接
2020/03/05 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
校企合作协议书
2014/04/16 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫