PHP -自动检测何时/如果文件已更新

3j86kqsm  于 2023-10-15  发布在  PHP
关注(0)|答案(5)|浏览(112)

在PHP中有没有一种方法可以检测文件何时被更新和保存?
如果没有,那最好的方法是“伪造”这个。
即在执行某个操作之前,检查文件的最后保存日期?

vi4fp9gy

vi4fp9gy1#

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

okxuctiv

okxuctiv2#

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

ojsjcaue

ojsjcaue3#

您可以使用filemtime()来查找文件的修改日期。如果我没理解错的话。
但是,如果你想在文件被修改时跟踪它们,你仍然可以使用filemtime,但是你必须跟踪当前的修改日期(例如:在db或file中),并对照当前值检查此值。
你可以使用cronjob定期运行这个php脚本。

2guxujil

2guxujil4#

<?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));
}

?>

使用此函数获取文件上次修改的时间。你可以利用数据来完成你的任务。

ndasle7k

ndasle7k5#

一种简单的方法是使用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
一个C循环R校验C校验(CRC)(...)进入这些系统的数据块得到一个短的校验值,基于其内容的多项式除法的余数。在检索时,重复计算,如果检查值不匹配,可以采取纠正措施
算法列表:https://www.php.net/manual/en/function.hash-algos.php

相关问题