深入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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 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中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
php中autoload的用法总结
2013/11/08 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
Python多线程下载文件的方法
2015/07/10 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python 对象和json互相转换方法
2018/03/22 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
数学教学随笔感言
2014/02/17 职场文书
上党课的心得体会
2014/09/02 职场文书
分居协议书范本
2014/11/03 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
女方家长婚礼致辞
2015/07/27 职场文书