深入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 相关文章推荐
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
php树型类实例
Dec 05 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
php二维码生成
Oct 19 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
PHP文件上传操作实例详解
Sep 27 PHP
php中对象引用和复制实例分析
Aug 14 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 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文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
strstr()的简单实现
2013/09/26 面试题
一道输出判断型Java面试题
2014/10/01 面试题
Java语言的优势
2015/01/10 面试题
银行自荐信范文
2013/10/07 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
百年校庆感言
2015/08/01 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python