3

PHP中有没有办法检测文件何时更新和保存?

如果不是,那么“伪造”这个的最佳方法是什么。

即在执行某个操作之前,检查文件的最后保存日期?

4

5 回答 5

3

您可以使用filemtime. 它返回文件的“最后修改”时间戳。(如果您的意思是在文件更改时运行 PHP 脚本,那么仅使用 PHP 是不可能的。)

于 2012-04-27T18:44:07.763 回答
3

PHP 脚本将无法自动检测文件更改,因为必须请求页面。您可以编写一个脚本并运行一个 cron(计划任务)来经常运行。或者像其他人建议的那样使用filemtime() 。

于 2012-04-27T18:45:54.683 回答
2

您可以使用filemtime()来找出文件的修改日期。如果我理解你是正确的。

但是,如果您想在文件更改时跟踪文件,您仍然可以使用filemtime,但您必须跟踪当前修改日期(例如在数据库或文件中)并根据当前值检查此值。

您可以使用 cronjob 定期运行此 php 脚本。

于 2012-04-27T18:44:01.953 回答
2
<?php
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

?>

使用此函数获取文件最后一次修改的时间。您可以使用数据来完成您的任务。

于 2012-04-27T18:45:20.677 回答
0

一种简单的方法是使用 类型的哈希来监视内容更改crc32,这具有占用空间非常小的优势。

<?php
$hash = hash_file("crc32","watch.txt");
while ($hash === hash_file("crc32","watch.txt")){
  usleep(100000); // 100ms
}
echo "File changed";

https://en.wikipedia.org/wiki/Cyclic_redundancy_check

循环冗余校验( CRC ) (...) 进入这些系统的数据块会根据其内容的多项式除法的余数附加一个简短的校验值检索时,重复计算,如果检查值不匹配,可以采取纠正措施

https://www.php.net/manual/en/function.hash-algos.php

于 2021-04-08T16:59:48.093 回答