• PHP判断远程文件是否存在


    <?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
    ";
    	$request_str .= "Host:".$host."
    ";
    	$request_str .= "Connection:Close
    
    ";
    
    	//发送请求
    	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://127.0.0.2/viewarticle.php?id=119617';
    	$exits = remote_file_exists($str_url);
    	echo $exists ? "Exists" : "Not exists";
    ?>

    方法一(需要开启allow_url_fopen):

    <?php
    	$url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
    	$fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false;
    	echo $fileExists; //返回1,就说明文件存在。
    ?>

    方法二(需要服务器支持Curl组件):

    <?php
    function check_remote_file_exists($url) {
    	$curl = curl_init($url); // 不取回数据
    	curl_setopt($curl, CURLOPT_NOBODY, true);
    	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
    	$result = curl_exec($curl);
    	$found = false; // 如果请求没有发送失败
    	if ($result !== false) {
    
    		/** 再检查http响应码是否为200 */
    		$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    		if ($statusCode == 200) {
    			$found = true;
    		}
    	}
    	curl_close($curl);
    
    	return $found;
    }
    
    $url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
    echo check_remote_file_exists($url); // 返回1,说明存在。
    
    ?>
  • 相关阅读:
    工作流调度器azkaban
    日志采集框架Flume
    MAPREDUCE框架结构及核心运行机制
    Python爬虫开发系列之五》数据存储为TXT、JSON格式
    Python爬虫开发系列之二》请求库及解析库安装
    策略模式+简单工厂模式
    简单工厂模式
    单例模式
    5、计算高可用
    4、存储高可用
  • 原文地址:https://www.cnblogs.com/52php/p/5657935.html
Copyright © 2020-2023  润新知