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 MYSQL 数据备份类
Jun 19 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
ThinkPHP3.1之D方法实例详解
Jun 20 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
php 多继承的几种常见实现方法示例
Nov 18 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 获取一个月第一天与最后一天的代码
2010/05/16 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP如何实现跨域
2016/05/30 PHP
php批量删除操作代码分享
2017/02/26 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
微信JS接口大全
2016/08/25 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python通过正则表达式选取callback的方法
2015/07/18 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
后进生转化工作制度
2014/01/17 职场文书
副总经理岗位职责
2014/03/16 职场文书
毕业论文评语大全
2014/04/29 职场文书
公司档案管理制度
2015/08/05 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
hive数据仓库新增字段方法
2022/06/25 数据库