使用filemtime()
int filemtime ( string $filename )
这个PHP函数返回一个文件的数据块被写入的时间,即文件内容被改变的时间。
<?php
// outputs e.g. somefile.txt was last modified: December 12 2014 09:16:23.
$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>
要获取目录的最后修改时间,可以这样:
<pre>
$getLastModDir = filemtime("/path/to/directory/.");
</pre>
记下将目录视为文件并实际获取其最后修改日期所需的最后一个点。
当您只想在网站首页上显示一条“上次更新”消息并且仍将网站的所有文件考虑在内时,这会派上用场。
要获取某个远程文件的修改日期,您可以使用 codewalker dot com 上记事本的 fine 功能(由 web dot de 的 dma05 和 lillesvin dot net 的 madsen 改进) .
但是您现在可以使用stream_get_meta_data (PHP>4.3.0) 更轻松地获得相同的结果。
但是,如果发生某些重定向,可能会出现问题。在这种情况下,服务器 HTTP 响应不包含 Last-Modified 标头,但有一个 Location 标头指示在哪里可以找到文件。下面的函数负责任何重定向,甚至是多次重定向,以便您到达您想要最后修改日期的真实文件。
<?php
// get remote file last modification date (returns unix timestamp)
function GetRemoteLastModified( $uri )
{
// default
$unixtime = 0;
$fp = fopen( $uri, "r" );
if( !$fp ) {return;}
$MetaData = stream_get_meta_data( $fp );
foreach( $MetaData['wrapper_data'] as $response )
{
// case: redirection
if( substr( strtolower($response), 0, 10 ) == 'location: ' )
{
$newUri = substr( $response, 10 );
fclose( $fp );
return GetRemoteLastModified( $newUri );
}
// case: last-modified
elseif( substr( strtolower($response), 0, 15 ) == 'last-modified: ' )
{
$unixtime = strtotime( substr($response, 15) );
break;
}
}
fclose( $fp );
return $unixtime;
}
?>