PHP使用get_headers函数判断远程文件是否存在的方法


Posted in PHP onNovember 28, 2014

本文实例讲述了PHP使用get_headers函数判断远程文件是否存在的方法。分享给大家供大家参考。具体实现方法如下:

以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下。

先来简单了解get_headers()函数

get_headers() 返回一个数组m包含有服务器响应一个 HTTP 请求所发送的标头。

get_headers:发送服务器响应HTTP请求

get_headers(字符串url[链接格式])

get_headers()以数组的形式返回服务器HTTP请求m如果执行失败,将返回FALSE和一个错误的水平E_WARNING,

可选参数设置为1,get_headers()能分析系统的响应速度和集数组中的键,

注意:使用该函数需要把 php.ini里面的allow_url_fopen = On,才能使用

实例代码如下:

<?php 

$url = 'https://3water.com'; 

print_r(get_headers($url)); 

print_r(get_headers($url, 1)); 

?>

运行结果如下:
Array

(

    [0] => HTTP/1.1 200 OK

    [1] => Cache-Control: max-age=1800

    [2] => Content-Length: 54874

    [3] => Content-Type: text/html

    [4] => Content-Location: https://3water.com/index.htm

    [5] => Last-Modified: Fri, 28 Nov 2014 03:34:56 GMT

    [6] => Accept-Ranges: bytes

    [7] => ETag: "b66ba847bcad01:bc5"

    [8] => Server: Microsoft-IIS/6.0

    [9] => Date: Fri, 28 Nov 2014 03:37:34 GMT

    [10] => Connection: close

)

Array

(

    [0] => HTTP/1.1 200 OK

    [Cache-Control] => max-age=1800

    [Content-Length] => 54874

    [Content-Type] => text/html

    [Content-Location] => https://3water.com/index.htm

    [Last-Modified] => Fri, 28 Nov 2014 03:34:56 GMT

    [Accept-Ranges] => bytes

    [ETag] => "b66ba847bcad01:bc5"

    [Server] => Microsoft-IIS/6.0

    [Date] => Fri, 28 Nov 2014 03:37:35 GMT

    [Connection] => close

)

判断远程文件是否存在代码如下:
//判断远程文件是否存在   

function remote_file_exists($url) {   

        $executeTime = ini_get('max_execution_time');   

        ini_set('max_execution_time', 0);   

        $headers = @get_headers($url);   

        ini_set('max_execution_time', $executeTime);   

        if ($headers) {   

            $head = explode(' ', $headers[0]);   

            if ( !emptyempty($head[1]) && intval($head[1]) < 400) return true;   

        }   

        return false;   

}

排除重定向的实例代码如下:
<?php  

/** 

 * Fetches all the real headers sent by the server in response to a HTTP request without redirects 

 * 获取不包含重定向的报头 

 */  

     

function get_real_headers($url,$format=0,$follow_redirect=0) {  

  if (!$follow_redirect) {  

    //set new default options  

    $opts = array('http' =>  

        array('max_redirects'=>1,'ignore_errors'=>1)  

    );  

    stream_context_get_default($opts);  

  }  

  //get headers  

    $headers=get_headers($url,$format);  

    //restore default options  

  if (isset($opts)) {  

    $opts = array('http' =>  

        array('max_redirects'=>20,'ignore_errors'=>0)  

    );

    stream_context_get_default($opts);  

  }  

  //return  

    return $headers;  

}  

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP调用数据库的存贮过程
Oct 09 PHP
php,不用COM,生成excel文件
Oct 09 PHP
PHP时间戳使用实例代码
Jun 07 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP连接access数据库
Mar 27 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
php文件上传、下载和删除示例
Aug 28 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
CI框架附属类用法分析
Dec 26 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
php的mssql数据库连接类实例
Nov 28 #PHP
smarty中post用法实例
Nov 28 #PHP
smarty简单入门实例
Nov 28 #PHP
php最简单的删除目录与文件实现方法
Nov 28 #PHP
php查找指定目录下指定大小文件的方法
Nov 28 #PHP
thinkphp四种url访问方式详解
Nov 28 #PHP
thinkphp数据查询和遍历数组实例
Nov 28 #PHP
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
php生成验证码函数
2015/10/20 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
员工拓展培训方案
2014/02/15 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书