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 解决session死锁的方法
Jun 20 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
php使用fullcalendar日历插件详解
Mar 06 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
Views rows style模板重写代码
2011/05/16 PHP
php页面防重复提交方法总结
2013/11/25 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
原生js轮播特效
2017/05/18 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
python 系统调用的实例详解
2017/07/11 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python图形用户接口实例详解
2019/12/16 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
机动车交通事故协议书
2015/01/29 职场文书
小升初自荐信范文
2015/03/05 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Nebula Graph解决风控业务实践
2022/03/31 MySQL