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 has encountered an Access Violation
Jan 15 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
php中实现字符串翻转的方法
Feb 22 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
phpinfo的知识点总结
Oct 10 PHP
laravel框架上传图片实现实时预览功能
Oct 14 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
phpstorm编辑器乱码问题解决
2014/12/01 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
python如何构建mock接口服务
2021/01/28 Python
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
护士在校生自荐信
2014/02/01 职场文书
小学教师师德反思
2014/02/03 职场文书
安全生产责任书
2014/03/12 职场文书
继承权公证书范本
2015/01/23 职场文书
JS实现简单的九宫格抽奖
2022/06/28 Javascript