PHP判断远程文件是否存在

我们要处理的是判断一个远程服务器文件是否是存在,而不是自己本同服务器目录了,如果判断远程服务器的文件上否存在我们需要使用到curl_init,fsockopen,fopen方法,下面我来给大家举例说明.

fopen函数

fopen() 函数打开文件或者 URL,如果打开失败,本函数返回 FALSE.

语法:fopen(filename) filename 规定要打开的文件或 URL.

从这个函数的说明来看是支持url的,代码如下:

  1. <?php
  2. $url = 'http://www.phpfensi.com/images/test.jpg';
  3. if( @fopen( $url, 'r' ) )
  4. {
  5. echo 'File Exits';
  6. }
  7. else
  8. {
  9. echo 'File Do Not Exits';
  10. }
  11. ?>

这样的写个人很不推荐,因为它这们很是浪费服务器性能资源的.

curl函数

PHP实例代码如下:

  1. <?php
  2. $url2 = 'http://www.phpfensi.com/test.jpg';
  3. $ch = curl_init();
  4. $timeout = 10;
  5. curl_setopt ($ch, CURLOPT_URL, $url2);
  6. curl_setopt($ch, CURLOPT_HEADER, 1);
  7. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  9. $contents = curl_exec($ch);
  10. //echo $contents;
  11. if (preg_match("/404/", $contents)){
  12. echo '文件不存在';
  13. }
  14. ?>

小提示,不过此函数需我服务器开启才可用.

推荐使用此方法,还有一种利用fsockopen 这种是专业的远程采集版了,代码如下:

  1. $url = "http://www.phpfensi.com/.gif";
  2. $info = parse_url($url);
  3. $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
  4. fputs($fp,"GET {$info['path']} HTTP/1.1rn");
  5. fputs($fp, "Host: {$info['host']}rn");
  6. fputs($fp, "Connection: closernrn");
  7. $headers = array();
  8. while(!feof($fp)) {
  9. $line = fgets($fp);
  10. if($line != "rn") {
  11. $headers[] = $line;
  12. }else {
  13. break;
  14. }
  15. }
  16. echo "<pre>";
  17. print_r($headers);

小提示,不过此函数需我服务器开启才可用.