Home  >  Article  >  Backend Development  >  thinkphp中判断远路及非远程文件是否存在

thinkphp中判断远路及非远程文件是否存在

WBOY
WBOYOriginal
2016-06-13 13:05:35992browse

thinkphp中判断远程及非远程文件是否存在

 

 //判断远程文件是否存在
 /*
   函数:remote_file_exists
   功能:判断远程文件是否存在
   参数: $url_file - 远程文件URL
     $flag  - true为判断远程文件,false为判断非远程文件
   返回:存在返回true,不存在或者其他原因返回false
 */ 
 static function remote_file_exists($url_file,$flag = true){
  if($flag == true){ //默认是判断远程文件
   //检测输入
   $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;
  }else if($flag == false){  //非远程文件
   return file_exists($url_file);
  }
 } 

?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn