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的分页功能
Mar 21 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
PHP实现微信退款功能
Oct 02 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批量检测并去除文件BOM头代码实例
2014/05/08 PHP
动态控制Table的js代码
2007/03/07 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
jquery常用操作小结
2014/07/21 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
微信小程序实现搜索功能
2020/03/10 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
python感知机实现代码
2019/01/18 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
大学生自我鉴定
2013/12/16 职场文书
优秀广告词大全
2014/03/19 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
MySQL基于索引的压力测试的实现
2021/11/07 MySQL