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生成自己的LOG文件
Oct 09 PHP
PHP+ajax 无刷新删除数据
Feb 20 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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
一个很不错的PHP翻页类
2009/06/01 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
简单的python后台管理程序
2017/04/13 Python
python+mysql实现教务管理系统
2019/02/20 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
python中的django是做什么的
2020/07/31 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
物业管理个人自我评价
2013/11/08 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
银行员工职业规划范文
2014/01/21 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
中学生检讨书范文
2014/11/03 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
Python中tkinter的用户登录管理的实现
2021/04/22 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python