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


Posted in PHP onOctober 08, 2011
//判断远程文件 
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 相关文章推荐
PHP编程网上资源导航
Oct 09 PHP
php在线打包程序源码
Jul 27 PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
两个php日期控制类实例
Dec 09 PHP
浅析iis7.5安装配置php环境
May 10 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
php解决安全问题的方法实例
Sep 19 PHP
PHP7 字符串处理机制修改
Mar 09 PHP
PHP下判断网址是否有效的代码
Oct 08 #PHP
Admin generator, filters and I18n
Oct 06 #PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 #PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 #PHP
linux iconv方法的使用
Oct 01 #PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 #PHP
php中mysql模块部分功能的简单封装
Sep 30 #PHP
You might like
打造计数器DIY三步曲(中)
2006/10/09 PHP
PHP 变量的定义方法
2010/01/26 PHP
详解PHP中的Traits
2015/07/29 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
几行js代码实现自适应
2017/02/24 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
node.js通过url读取文件
2020/10/16 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
python中遍历文件的3个方法
2014/09/02 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
股权转让协议书
2014/04/12 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
Javascript webpack动态import
2022/04/19 Javascript