深入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对数组排序代码分享
Feb 24 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
Jul 15 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php curl 上传文件代码实例
Apr 27 PHP
php实现简易聊天室应用代码
Sep 23 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
php之可变函数的实例详解
Sep 13 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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项目中比较通用的php自建函数的详解
2013/06/06 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
python三方库之requests的快速上手
2019/03/04 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python如何绘制疫情图
2020/09/16 Python
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
机关门卫的岗位职责
2014/04/29 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
降价通知函
2015/04/23 职场文书
人民检察院起诉书
2015/05/20 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫
Mysql数据库group by原理详解
2022/07/07 MySQL