まず第一に、次の点について合意に達する必要があります:
/dev/shm は Linux のメモリディレクトリです。当然、このディレクトリに作成されたものはメモリに配置されます。メモリが不足している場合は、メモリの 50% を使用できます。スワップを通じてディスクにコピーします。
inotify は Linux 上のファイルシステムイベント監視で、inotify_init や inotify_read などのインターフェースを提供します (表示するには uname -a )。 cygwin では実装できません。
PHP はデフォルトで inotify をサポートする拡張機能を提供していないため、pecl を通じてダウンロード、コンパイル、インストールする必要があります。
inotify (http://pecl.php.net/package/inotify) をダウンロードし、解凍してインストールします。
tar -xvf inotify-0.1.6.tgz cd inotify-0.1.6 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
次に、php.ini ファイルに inotify.so をロードし、php -i|grep inotify で正常にロードされたかどうかを確認します。
次に、/dev/shm にメモリ ディレクトリを作成します。これは、キューの処理には高速性が必要であり、ディスク上に配置すると一定量の I/O 時間が消費されるためです。/dev/shm/inotify ディレクトリを作成します。次に、php を使用して、ディレクトリを監視する無限ループのデモを作成します。さらに、/dev/shm/inotify ディレクトリのファイルまたは属性を変更して結果を確認します。
<?php $notify = inotify_init(); $rs = inotify_add_watch($notify, '/dev/shm/inotify', IN_CREATE);//IN_CREATE表示只监控新文件的建立,具体参数列表可以在手册inotify处找到。 if(!$rs){ die('fail to watch /dev/shm/inotify'); } while(1){ $files = inotify_read($notify); print_r($files); echo 'continue to process next event'; }
/dev/shm/inotify に新しいファイル test.txt を作成しようとすると、次のようなすべてのファイルを含む配列が inotify_read で返されます。
Array ( [0] => Array ( [wd] => 1 [mask] => 256 [cookie] => 0 [name] => test.txt ) )