深入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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
Cakephp 执行主要流程
Mar 24 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP反射机制用法实例
Aug 28 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
laravel使用数据库测试注意事项
Apr 10 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
PHP多进程简单实例小结
2019/11/09 PHP
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
python实现用户登录系统
2016/05/21 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
护理专业的自荐信
2013/10/22 职场文书
主持人演讲稿范文
2013/12/28 职场文书
前台文员岗位职责
2013/12/28 职场文书
开业主持词
2014/03/21 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis