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的聊天室设计
Oct 09 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 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学习之运算符相关概念
2011/06/09 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
python scatter函数用法实例详解
2020/02/11 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
C#笔试题和英文面试题
2013/02/07 面试题
应届生煤化工求职信
2013/10/21 职场文书
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
办公室经理岗位职责
2014/01/01 职场文书
政风行风整改报告
2014/11/06 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
Nginx源码编译安装过程记录
2021/11/17 Servers