深入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动态图像的创建
Oct 09 PHP
php中对xml读取的相关函数的介绍一
Jun 05 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
php封装的验证码类分享
2017/02/26 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python实现将内容分行输出
2015/11/05 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
大学生秋游活动方案
2014/02/17 职场文书
食品安全责任书
2014/04/15 职场文书
供货协议书范本
2014/04/22 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
校长个人总结
2015/03/03 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
Redis实战高并发之扣减库存项目
2022/04/14 Redis