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