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 相关文章推荐
网络资源
Oct 09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php下实现农历日历的代码
Mar 07 PHP
php结合飞信 免费天气预报短信
May 07 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php生成动态验证码gif图片
Oct 19 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
详解PHP中的8个魔术常量
Jul 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
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
JS高级笔记
2011/07/13 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
python 格式化输出百分号的方法
2019/01/20 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
简单了解Python write writelines区别
2020/02/27 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
统计每一学生的平均成绩
2014/06/06 面试题
门卫人员岗位职责
2013/12/24 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
司机检讨书
2014/02/13 职场文书
小班秋游活动方案
2014/02/22 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL