精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>问题解答>>解答:如何获得远程主机文件的建立时间

主题:解答:如何获得远程主机文件的建立时间
发信人: dalasthunder(Dallas)
整理人: dalasthunder(2002-07-25 06:09:11), 站内信件
目前为止,尚未找到获得远程主机的文件的建立时间的方法。

但是远程主机文件的最后修改时间是可以取得的。该信息包含在http response header中的Last-Modified字段中。但是对一些返回非标准header的web server可能无效,例如Apache Tomcat。

那么对远程主机发送一个请求,只要求取得该文件的header就可以了。
以下的函数用来取得header。

function remote_header($host,$path){ 
    $fp = fsockopen ($host, 80, $errno, $errstr, 30); 
    if (!$fp) { 
        echo "ERROR: $errstr ($errno)\n"; 
    } else { 
        fputs ($fp, "HEAD $path HTTP/1.0\r\n"); 
        fputs($fp,"HOST: $host\r\n\r\n"); 
        while (!feof($fp)) { 
            $header .= fgets($fp,4096); 
        } 
        fclose ($fp); 
    } 
    return $header; 


然后就可以用以下的代码测试:

<?
$rh = remote_header("img.163.com","/club/uh/logo.gif");
echo "<pre>\n";
    echo $rh;
?>

得到的结果如下:

HTTP/1.0 200 OK
Date: Fri, 05 Jul 2002 00:30:53 GMT
Server: Apache/1.3.12 (Unix)
Last-Modified: Sat, 03 Feb 2001 09:04:24 GMT
ETag: "37196f-392-3a7bc998"
Accept-Ranges: bytes
Content-Length: 914
Content-Type: image/gif
Age: 16097
X-Cache: HIT from bjca7
X-Cache-Lookup: HIT from bjca7:80
Connection: close

这里需要做一些字符串的分析才能取得最后修改时间。同时还需要判断返回值是不是200,否则结果就没有意义。



[关闭][返回]