PHP中file_get_contents高?用法实例


Posted in PHP onSeptember 24, 2014

本文实例讲述了PHP中file_get_contents高级用法,分享给大家供大家参考。具体分析如下:

首先解决file_get_contents的超时问题,在超时返回错误后就象js中的settimeout那样进行一次尝试,错误超过3次或者5次后就确认为无法连线伺服器而彻底放弃。
这?就简单介绍两种解决方法:

一、增加超时的时间限制

注意:set_time_limit只是设定你的PHP程式的超时时间,而不是file_get_contents函数读取URL的超时时间。

我一开始以为set_time_limit也能影响到file_get_contents,后来经测试是无效的。真正的修改file_get_contents延时可以用resource $context的timeout参数:

PHP程序代码如下:

$opts = array(
    'http'=>array(
      'method'=>"GET",
      'timeout'=>60,
    )
);

$context = stream_context_create($opts);

$html =file_get_contents('https://3water.com', false, $context);
fpassthru($fp);

二、多次尝试

PHP程序代码如下:

$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http...'))===FALSE){
   $cnt++;
}

以上方法对付超时已经OK了。接下来演示一下用file_get_contents实现Post,如下:
PHP程序代码

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('https://3water.com', $data);

注意文档头的Set_time_out否则整个文档都得超时了。

希望本文所述对大家php程序设计的学习有所帮助。

PHP 相关文章推荐
杏林同学录(二)
Oct 09 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
PHP整合PayPal支付
Jun 11 PHP
php实现异步数据调用的方法
Dec 24 PHP
orm获取关联表里的属性值
Apr 17 PHP
php常用字符函数实例小结
Dec 29 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
laravel 时间格式转时间戳的例子
Oct 11 PHP
php实现的Cookies操作类实例
Sep 24 #PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 #PHP
php过滤html标记属性类用法实例
Sep 23 #PHP
php广告加载类用法实例
Sep 23 #PHP
php实现根据url自动生成缩略图的方法
Sep 23 #PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 #PHP
PHP图片库imagemagick安装方法
Sep 23 #PHP
You might like
PHP生成Gif图片验证码
2013/10/27 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
Python AES加密模块用法分析
2017/05/22 Python
django允许外部访问的实例讲解
2018/05/14 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
Python3列表List入门知识附实例
2020/02/09 Python
重构Python代码的六个实例
2020/11/25 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
红旗方阵解说词
2014/02/12 职场文书
会计员岗位职责
2014/03/15 职场文书
委托书怎么写
2014/07/31 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS