深入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 21 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
Jul 29 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
php解决约瑟夫环示例
Apr 09 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
PHP获取文件行数的方法
Jun 10 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
laravel 实现划分admin和home 模块分组
Oct 15 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
利用PHP实现短域名互转
2013/07/05 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用Python的内建模块collections的教程
2015/04/28 Python
TensorFlow变量管理详解
2018/03/10 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python修改列表值问题解决方案
2020/03/06 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
期末自我鉴定
2014/01/23 职场文书
六年级数学教学反思
2014/02/03 职场文书
就业意向书范文
2014/04/01 职场文书
进口业务员岗位职责
2014/04/06 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
酒店前台岗位职责
2015/04/16 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js