我的BLOG开张了,做好准备喔!!!

php 判断远程文件是否存在

上一篇 / 下一篇  2008-08-30 15:15:43 / 个人分类:技术文章

<?php

/*
  函数:remote_file_exists
  功能:判断远程文件是否存在
  参数: $url_file - 远程文件URL
  返回:存在返回true,不存在或者其他原因返回false
*/
function remote_file_exists($url_file){
    //检测输入
    $url_file = trim($url_file);
    if (empty($url_file)) { return false; }
    $url_arr = parse_url($url_file);
    if (!is_array($url_arr) || empty($url_arr)){ return false; }

    //获取请求数据
    $host = $url_arr['host'];
    $path = $url_arr['path'] ."?". $url_arr['query'];
    $port = isset($url_arr['port']) ? $url_arr['port'] : "80";

    //连接服务器
    $fp = fsockopen($host, $port, $err_no, $err_str, 30);
    if (!$fp){ return false; }

    //构造请求协议
    $request_str = "GET ".$path." HTTP/1.1\r\n";
  $request_str .= "Host: ".$host."\r\n";
  $request_str .= "Connection: Close\r\n\r\n";

    //发送请求
  fwrite($fp, $request_str);
    $first_header = fgets($fp, 1024);
  fclose($fp);

    //判断文件是否存在
    if (trim($first_header) == ""){ return false; }
    if (!preg_match("/200/", $first_header)){
        return false;
    }
    return true;
}

//测试代码
$str_url = 'http://www.phpx.com/viewarticle.php?id=119617';
$exits = remote_file_exists($str_url);
echo $exists ? "Exists" : "Not exists";

?>
这个函数用的fsockopen方式连接,效里好像比较高。当然如果是本地文件应该还是file_exits效率高啊。fsockopen一直没搞大明白。好像是在服务器模拟成浏览器请求发回数据的。

TAG: php 文件 判断

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-11-20  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 7632
  • 日志数: 105
  • 图片数: 5
  • 影音数: 2
  • 文件数: 2
  • 书签数: 5
  • 建立时间: 2007-05-01
  • 更新时间: 2008-10-31

RSS订阅

Open Toolbar