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中使用Oracle数据库(3)
Oct 09 PHP
php URL跳转代码 减少外链
Jun 25 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
php实现encode64编码类实例
Mar 24 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python中的filter()函数的用法
2015/04/27 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
详解Python多线程下的list
2020/07/03 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
入党积极分子介绍信
2014/01/17 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
品牌宣传方案
2014/03/21 职场文书
网络信息安全承诺书
2014/03/26 职场文书
春风行动实施方案
2014/03/28 职场文书
煤矿安全生产标语
2014/06/06 职场文书
设计大赛策划方案
2014/06/13 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
质量承诺书格式范文
2015/04/28 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android