跟踪文件变动信息

课后整理 2021-1-7

在网站的管理系统中,有时需要查看某个文件是否被修改过,在什么时间被修改的,最后被访问的时间是什么。本例设计一个表单,允许用户提交文件的路径,然后检测该文件的创建时间、修改时间和访问时间,运行结果如图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()函数返回指定文件名最后访问的时间,这里的最后访问是指每当一个文件的数据块搜索被读取,采用UNIX时间戳格式,有错误时返回FALSE。

filectime()函数返回指定文件名inode修改时间,即指定文件的inode最后改变时间,一般可以理解为文件创建时间。

inode(索引节点)用来存放档案,以及目录的基本信息,包含时间、档名、使用者及群组等,采用UNIX时间戳格式,有错误时返回FALSE。

filemtime()函数返回指定文件名最后修改的时间,最后修改指的是文件的内容改变,采用UNIX时间戳格式,有错误时返回FALSE。