zoukankan      html  css  js  c++  java
  • [PHP学习教程

    引言:项目过程当中碰到了类似流程这样的需求,对服务器上的文件进行依次操作,如:检查文件格式->检查文件是否有更新->处理更新->同步其他服务器等等

    如果需求的操作是依赖于远程文件是否存在,存在后再进行操作,则可以使用今天提供的这个函数

    一句话的事情,下面直接上高清无MSK的精妙代码!

    功能函数


    获得当前请求的页面路径(URL)地址

    语法:$url = getPageUrl()

    参数解析:

      $url_file string待判断的URL文件路径地址

    返回结果:

      bool - y/n

    <?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;
    }
    ?>

    说明:此处单纯的是使用直接的HTTP请求来进行判断,不需要任何插件支持

    示例1:

    <?
        // 测试代码
        $str_url = 'http://127.0.0.1/data.php?id=512714';
        $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,说明存在。
    
    ?>

    结束语


    本讲利用两种方式介绍了判断远程文件是否存在,大家可以根据项目情况进行使用。

    未完,待更新...

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4822723.html

     

  • 相关阅读:
    delphi之动态库调用和串口通讯
    git如何使用 svn如何使用
    delphi学习笔记1
    sql
    linux连接与传输等命令
    jdbc
    list/tstringlist/tobjectlist
    SQL GRANT
    Invalidate介绍
    FORM 的创建
  • 原文地址:https://www.cnblogs.com/superdo/p/4822723.html
Copyright © 2011-2022 走看看