深入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 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
php如何调用webservice应用介绍
Nov 24 PHP
解析php中const与define的应用区别
Jun 18 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP异常处理Exception类
Dec 11 PHP
php实现头像上传预览功能
Apr 27 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
js对象基础实例分析
2015/01/13 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
js中this对象用法分析
2018/01/05 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
Element Input输入框的使用方法
2020/07/26 Javascript
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python读写docx文件的方法
2018/05/08 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
python实现图片九宫格分割
2021/03/07 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
工程类专业自荐信范文
2014/03/09 职场文书
代理协议书
2014/04/22 职场文书
科技工作者先进事迹
2014/08/16 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
运动员入场词
2015/07/18 职场文书
感恩的心主题班会
2015/08/12 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers