php下利用curl判断远程文件是否存在的实现代码

 更新时间:2011年10月08日 19:12:07   作者:  
php下利用curl判断远程文件是否存在的实现代码,我们有些程序因需要事先判断文件是否存在然后再进行后面的操作。
复制代码 代码如下:

//判断远程文件
function check_remote_file_exists($url)
{
$curl = curl_init($url);
// 不取回数据
curl_setopt($curl, CURLOPT_NOBODY, true);
// 发送请求
$result = curl_exec($curl);
$found = false;
// 如果请求没有发送失败
if ($result !== false) {
// 再检查http响应码是否为200
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$found = true;
}
}
curl_close($curl);

return $found;
}

最近在弄一个html5音乐播放的网站,想让我的iphone和ipad爽一爽,前端采用jquery的一个插件jplayer,经过改造之后效果还不错。
后台采用PHP,定时采集百度的MP3。 考虑到本人服务器空间菊紧,当然只能采集MP3地址,文件并没有下载到本地。考虑到百度MP3路径经常变,实在是蛋疼,于是必须定时判断一下MP3路径还对不对,于是就有了PHP判断远程文件是否存在这篇软文。开始用get_headers() 方法,后来听说存在效率问题,于是不使用此解决方案,但是也顺带一提吧,下面看看get_headers函数的效果:
复制代码 代码如下:

//默认效果
print_r(get_headers("http://www.baidu.com/img/baidu_sylogo1.gif"));
结果:
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Thu, 02 Jun 2011 02:47:27 GMT
[2] => Server: Apache
[3] => P3P: CP=" OTI DSP COR IVA OUR IND COM "
[4] => Set-Cookie: BAIDUID=7F6A5A2ED03878A7791C89C526966F3A:FG=1; expires=Fri, 01-Jun-12 02:47:27 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1
[5] => Last-Modified: Thu, 20 Jan 2011 07:15:35 GMT
[6] => ETag: "65e-49a41e65933c0"
[7] => Accept-Ranges: bytes
[8] => Content-Length: 1630
[9] => Cache-Control: max-age=315360000
[10] => Expires: Sun, 30 May 2021 02:47:27 GMT
[11] => Connection: Close
[12] => Content-Type: image/gif
)
//加参数1的效果
print_r(get_headers("http://www.baidu.com/img/baidu_sylogo1.gif", 1));
结果:
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Thu, 02 Jun 2011 02:49:28 GMT
[Server] => Apache
[P3P] => CP=" OTI DSP COR IVA OUR IND COM "
[Set-Cookie] => BAIDUID=4D875812FC482C0ADE4F5C17068849EE:FG=1; expires=Fri, 01-Jun-12 02:49:28 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1
[Last-Modified] => Thu, 20 Jan 2011 07:15:35 GMT
[ETag] => "65e-49a41e65933c0"
[Accept-Ranges] => bytes
[Content-Length] => 1630
[Cache-Control] => max-age=315360000
[Expires] => Sun, 30 May 2021 02:49:28 GMT
[Connection] => Close
[Content-Type] => image/gif
)

怎么样,get_headers函数还是不错的吧,不过既然效率有问题,那只好不优先考虑了,curl就不错,下面看看curl的做法
复制代码 代码如下:

function check_remote_file_exists($url)
{
$curl = curl_init($url);
// 不取回数据
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); //不加这个会返回403,加了才返回正确的200,原因不明
// 发送请求
$result = curl_exec($curl);
$found = false;
// 如果请求没有发送失败
if ($result !== false)
{
// 再检查http响应码是否为200
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200)
{
$found = true;
}
}
curl_close($curl);
return $found;
}
$exists = check_remote_file_exists('http://www.baidu.com/img/baidu_sylogo1.gif');
echo $exists ? '存在' : '不存在';
$exists = check_remote_file_exists('http://www.baidu.com/test.jpg');
echo $exists ? '存在' : '不存在';

相关文章

  • 详解如何在PHP代码里面调用Go程序

    详解如何在PHP代码里面调用Go程序

    PHP和Go都是广泛使用的编程语言,但各自具有其独特的优势和特性,那么如何在PHP代码里面调用Go程序呢,下面小编就来为大家介绍一下常用的两种方法
    2023-11-11
  • PHP判断文件是否被引入的方法get_included_files用法示例

    PHP判断文件是否被引入的方法get_included_files用法示例

    这篇文章主要介绍了PHP判断文件是否被引入的方法get_included_files用法,结合实例形式分析了get_included_files函数获取引入文件及遍历输出的操作技巧,需要的朋友可以参考下
    2016-11-11
  • 网页上facebook分享功能具体实现

    网页上facebook分享功能具体实现

    本文为大家介绍下网页上facebook分享功能的具体实现,详细代码请看本文
    2014-01-01
  • PHP 登录完成后如何跳转上一访问页面

    PHP 登录完成后如何跳转上一访问页面

    访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面
    2014-01-01
  • php实现JWT验证的实例教程

    php实现JWT验证的实例教程

    这篇文章主要给大家介绍了关于php实现JWT验证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 详解PHP使用OSS上传文件

    详解PHP使用OSS上传文件

    这篇文章主要介绍了PHP使用OSS上传文件,对OSS感兴趣的同学,可以参考并且实验一下
    2021-04-04
  • PHP使用Curl实现模拟登录及抓取数据功能示例

    PHP使用Curl实现模拟登录及抓取数据功能示例

    这篇文章主要介绍了PHP使用Curl实现模拟登录及抓取数据功能,结合实例形式分析了php使用curl进行登陆、验证、cookie操作与数据抓取等相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • PHP读取zip文件的方法示例

    PHP读取zip文件的方法示例

    这篇文章主要介绍了PHP读取zip文件的方法,结合实例形式分析了php针对zip文件的读取操作相关技巧,需要的朋友可以参考下
    2016-11-11
  • php多重接口的实现方法

    php多重接口的实现方法

    这篇文章主要介绍了php多重接口的实现方法,实例分析了php多重接口的定义与使用技巧,需要的朋友可以参考下
    2015-06-06
  • PHP答题类应用接口实例

    PHP答题类应用接口实例

    这篇文章主要介绍了PHP答题类应用接口,以实例形式详细分析了答题类程序的实现思路与相关技巧,并备有较为详尽的注释说明,便于理解,需要的朋友可以参考下
    2015-02-02

最新评论