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、引き続き使用できますが、現在の変更日(たとえば、dbまたはfile)を追跡し、この値を現在の値と照合する必要があります。

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 に答える