深入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打开文件fopen函数的使用说明
Jul 05 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
如何使用php等比例缩放图片
Oct 12 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 PHP
PHP 观察者模式深入理解与应用分析
Sep 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的一个登录的类 [推荐]
2007/03/16 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
python生成日历实例解析
2014/08/21 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Django接收自定义http header过程详解
2019/08/23 Python
Python中的整除和取模实例
2020/06/03 Python
python如何更新包
2020/06/11 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
电子商务应届生求职信
2013/11/16 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
运动会口号8字
2014/06/07 职场文书
法学求职信
2014/06/22 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
大学生交通专业求职信
2014/09/01 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书