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 相关文章推荐
使用php+xslt在windows平台上
Oct 09 PHP
社区(php&amp;&amp;mysql)六
Oct 09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
php字符串过滤与替换小结
Jan 26 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
用php如何解决大文件分片上传问题
Jul 07 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 文件上传功能实现代码
2009/06/24 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python单元和文档测试实例详解
2019/04/11 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
毕业研究生的自我鉴定
2013/11/30 职场文书
村居抓节水倡议书
2014/05/19 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
综合测评自我评价
2015/03/06 职场文书
贫困证明书范文
2015/06/16 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS