深入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 相关文章推荐
第九节--绑定
Nov 16 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
分享PHP header函数使用教程
Sep 05 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
PHP实现删除字符串中任何字符的函数
Aug 11 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
Yii框架响应组件用法实例分析
Sep 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版(4)
2006/10/09 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python win32 简单操作方法
2017/05/25 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
python实现登录与注册系统
2020/11/30 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
什么叫做SQL注入,如何防止
2016/10/04 面试题
英文版网络工程师求职信
2013/10/28 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
三年级语文教学反思
2014/02/01 职场文书
节约粮食标语
2014/06/18 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
高中教师个人总结
2015/02/10 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
2016年党员承诺书范文
2016/03/24 职场文书