fopen()方法
最简单的方法就是用fopen(),看看文件可否打开,能打就文件固然就存在。php
04 |
if ( @ fopen ( $url , 'r' ) ) |
10 |
echo 'File Do Not Exits' ; |
fopen() 函数打开文件或者 URL。若是打开失败,函数会返回 FALSE。html
语法:fopen(filename,mode,include_path,context)安全
参数 |
描述 |
filename |
必需。规定要打开的文件或 URL。 |
mode |
必需。规定要求到该文件/流的访问类型。可能的值见下表。 |
include_path |
可选。若是也须要在 include_path 中检索文件的话,能够将该参数设为 1 或 TRUE。 |
context |
可选。规定文件句柄的环境。Context 是能够修改流的行为的一套选项。 |
mode 参数的可能的值:服务器
mode |
说明 |
"r" |
只读方式打开,将文件指针指向文件头。 |
"r+" |
读写方式打开,将文件指针指向文件头。 |
"w" |
写入方式打开,将文件指针指向文件头并将文件大小截为零。若是文件不存在则尝试建立之。 |
"w+" |
读写方式打开,将文件指针指向文件头并将文件大小截为零。若是文件不存在则尝试建立之。 |
"a" |
写入方式打开,将文件指针指向文件末尾。若是文件不存在则尝试建立之。 |
"a+" |
读写方式打开,将文件指针指向文件末尾。若是文件不存在则尝试建立之。 |
"x" |
创 建并以写入方式打开,将文件指针指向文件头。若是文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。若是文件不存在则尝试建立之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及之后的版本所支持,仅能用于本地文件。 |
"x+" |
建立并以读写方式打开, 将文件指针指向文件头。若是文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。若是文件不存在则尝试建立之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及之后的版本所支持,仅能用于本地文件。 |
fopen() 将 filename 指定的名字资源绑定到一个流上。若是 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。若是该协议还没有注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。网络
若是 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 能够访问的,所以须要确认文件访问权限容许该访问。若是激活了安全模式或者 open_basedir 则会应用进一步的限制。curl
若是 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。若是关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。函数
一个fopen的用法url
2 |
$file = fopen ( "test.txt" , "r" ); |
3 |
$file = fopen ( "/home/test/test.txt" , "r" ); |
4 |
$file = fopen ( "/home/test/test.gif" , "wb" ); |
可是若是图片资源所在服务器挂掉了,这个函数会一直等待,因此咱们须要一个备用方案。spa
CURL 方法
CURL是个很好用的类库,下面看下如何用它来判断。.net
06 |
curl_setopt ( $ch , CURLOPT_URL, $url2 ); |
07 |
curl_setopt( $ch , CURLOPT_HEADER, 1); |
08 |
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1); |
09 |
curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, $timeout ); |
11 |
$contents = curl_exec( $ch ); |
13 |
if (preg_match( "/404/" , $contents )){ |
curl_exec()执行完以后若是文件不存在,会返回以下信息:
2 |
Date : Tue, 14 Feb 2012 05:08:34 GMT |
6 |
Content-Type: text/html |
用正则看看是否有404,有的话文件就不存在。