我正在开发一个用 PHP 编写的文件监控守护程序,使用inotify
PECL 扩展。我几乎完成了它,因为它告诉我inotify
事件何时发生。
的返回值inotify_read($fd)
是一个如下所示的数组:
Array
(
[0] => Array
(
[wd] => 2
[mask] => 1073741840
[cookie] => 0
[name] => collaphoto
)
[1] => Array
(
[wd] => 2
[mask] => 1073741856
[cookie] => 0
[name] => filewatcher
)
[2] => Array
(
[wd] => 2
[mask] => 1073741840
[cookie] => 0
[name] => filewatcher
)
)
如果我理解正确,每个子数组都是一个单独的事件,包含有关该事件的信息。wd
是 inotify 实例的描述符,mask
是触发事件的标志的整数值,例如IN_ATTRIB
或IN_ACCESS
,cookie
是将此事件连接到队列中另一个事件的唯一 ID,并且name
是已更改的目录或文件。仅当name
目录被 监视时才给出inotify
。
我的问题是如何根据mask
给定的值确定是什么位掩码触发了事件?我在处理 Bit Masks 方面仍然相当缺乏经验,所以请放轻松。