程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php判斷遠程文件是否存在

php判斷遠程文件是否存在

編輯:PHP綜合
我們知道file_exists判斷遠程文件是否存在時是無效的,
哪果用fopen會出現警告,雖然可以加@屏蔽,但總覺得不太好。
這時我們可以通過利用fsockopen()函數判斷,
收集了一個小函數,如果文件存在返回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://.....000.jpg';
$exits = remote_file_exists($str_url);
if($exits){
echo 'yes';
}else{
echo 'no';
} ,實際中我用fopen,get_headers,等方法測試過,fsockopen成功率最高,fopen,get_header均會出現http request faild請求失敗。
$fp = fopen( $str_url, "r" );
print_r(get_headers($str_url));
但是用socket的注意,如果文件太大,可能會導致加載很慢,等待時間很長。。。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved