ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使用してフォルダー内のファイルの変更を監視する方法はありますか?

PHPを使用してフォルダー内のファイルの変更を監視する方法はありますか?

WBOY
WBOYオリジナル
2016-08-04 09:20:122182ブラウズ

1. スタック オーバーフローで、リンクを達成するために md5 を使用していると誰かが言っているのを見かけました。 http://stackoverflow.com/ques.... 3Q
2. モニタリングを達成する方法を教えてください。

返信内容:

1. スタック オーバーフローで、リンクを達成するために md5 を使用していると誰かが言っているのを見かけました。 http://stackoverflow.com/ques.... 3Q
2. モニタリングを達成する方法を教えてください。

1. scandir() を通じてこのディレクトリ内のすべてのファイルを取得します。 scandir()获取本目录下面所有的文件;
2.foreach遍历文件,用md5file()保存文件md5值到其他目录的文件OR数据库(为什么不是数组等变量?因为变量在每次执行都会被清空);
3.用cron或windows的计划任务执行,把之前的md5列表转换成数组,然后用array_diff()比较之前的md5列表与当前scandir()2. foreach を使用してファイルを保存します。ファイル md5 値を他のディレクトリのファイルまたはデータベースに保存します (なぜ配列などの変数は使用できないのでしょうか? 変数は毎回クリアされるため)。

3. cron または Windows のスケジュールされたタスクを使用して、以前の md5 リストを配列に変換します。次に、array_diff() を使用して、以前の md5 リストと scandir() によって取得された現在の md5 ファイル リストを比較します。結果が返された場合、それはファイルが保存されたことを意味します。変更、削除、または追加。

ディレクトリのmtimeとctimeを試すことができます


Linux カーネルには、ディレクトリとファイルの変更の監視をサポートするイベント駆動型の Inotify メカニズム (C ドキュメント) があります。
PHP には、この一連の Inotify 操作をバインドする PECL 拡張機能もあります
http://pecl.php.net/package。 / i...
http://cn.php.net/manual/zh/b...

または、PHP を使用して、inotify-tools が提供するコマンド ツールを呼び出すこともできます。

上記の 2 人の兄弟の発言に基づくと、リアルタイムの場合は、コードを送信するときと同様にファイルの違いを確認する必要がある場合は、md5 値などのファイル フィンガープリントを使用できます。 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。