在网站的管理系统中,有时需要查看某个文件是否被修改过,在什么时间被修改的,最后被访问的时间是什么。本例设计一个表单,允许用户提交文件的路径,然后检测该文件的创建时间、修改时间和访问时间,运行结果如图11.15所示。

图11.15 跟踪文件变动信息
【操作步骤】
第1步,创建index.php,设计操作表单。添加文本框,并设置提交按钮。使用POST方法将数据提交到本页。
<form name="form1" method="post" action="index.php"> <p>文件路径:<input name="files" type="text" id="files" size="18"></p> <p><input type="submit" name="Submit" value="提 交"></p> </form>
第2步,通过$_POST方法获取表单提交的文件路径,然后应用fileatime()、filectime()和filemtime()函数对提交的文件进行检测,最后输出检测结果。
<?php
$file = $time = $times = "";
if(isset($_POST["Submit"])){
$file = iconv ( "utf-8", "gb2312", $_POST ['files'] );
if (file_exists ( $file )) {
$filemtime = filemtime ( $file );
$mtime = date ( "Y-m-d h:i:s", $filemtime );
$filectime = filectime ( $file );
$ctime = date ( "Y-m-d h:i:s", $filectime );
$fileatime = fileatime ( $file );
$atime = date ( "Y-m-d h:i:s", $fileatime );
echo "<p>文件名称:" . $file . "</p>";
echo "<p>最新修改时间:" . $mtime . "</p>";
echo "<p>文件创建时间:" . $ctime . "</p>";
echo "<p>最新访问时间:" . $atime . "</p>";
} else {
echo "<p>该文件不存在</p>";
}
}
?>
PHP提供3个跟踪文件的函数,简单说明如下。
- fileatime()
fileatime()函数返回指定文件名最后访问的时间,这里的最后访问是指每当一个文件的数据块搜索被读取,采用UNIX时间戳格式,有错误时返回FALSE。
- filectime()
filectime()函数返回指定文件名inode修改时间,即指定文件的inode最后改变时间,一般可以理解为文件创建时间。
inode(索引节点)用来存放档案,以及目录的基本信息,包含时间、档名、使用者及群组等,采用UNIX时间戳格式,有错误时返回FALSE。
- filemtime()
filemtime()函数返回指定文件名最后修改的时间,最后修改指的是文件的内容改变,采用UNIX时间戳格式,有错误时返回FALSE。