函数名称:inotify_add_watch()
适用版本:该函数在PHP 5.4.0及以上版本中可用。
用法:inotify_add_watch()函数用于向inotify实例添加一个新的监视对象。它会监视指定的文件或目录,并返回一个唯一的监视描述符。一旦监视对象的状态发生变化,可以使用该描述符来获取有关该事件的信息。
语法:int inotify_add_watch(resource $inotify_instance, string $pathname, int $mask)
参数:
- $inotify_instance:inotify实例,使用inotify_init()函数创建。
- $pathname:要监视的文件或目录的路径。
- $mask:要监视的事件类型。可以是以下常量的组合:
- IN_ACCESS:文件被访问
- IN_ATTRIB:文件属性发生变化
- IN_CLOSE_WRITE:文件被写入并关闭
- IN_CLOSE_NOWRITE:文件被关闭(不包括写入)
- IN_CREATE:文件或目录被创建
- IN_DELETE:文件或目录被删除
- IN_DELETE_SELF:监视的文件或目录自身被删除
- IN_MODIFY:文件被修改
- IN_MOVE_SELF:监视的文件或目录自身被移动
- IN_MOVED_FROM:文件或目录被移出监视的目录
- IN_MOVED_TO:文件或目录被移入监视的目录
- IN_OPEN:文件被打开
返回值:如果成功,则返回一个非负整数,表示监视描述符。如果失败,则返回false。
示例:
$inotifyInstance = inotify_init();
$watchDescriptor = inotify_add_watch($inotifyInstance, '/path/to/file.txt', IN_MODIFY | IN_DELETE);
if ($watchDescriptor === false) {
echo "添加监视失败";
} else {
echo "监视描述符:$watchDescriptor";
}
// 监听事件
while (true) {
$events = inotify_read($inotifyInstance);
if ($events === false) {
echo "读取事件失败";
break;
}
foreach ($events as $event) {
echo "事件类型:{$event['mask']}\n";
echo "事件名称:{$event['name']}\n";
echo "事件路径:{$event['path']}\n";
}
}
// 关闭inotify实例
inotify_rm_watch($inotifyInstance, $watchDescriptor);
fclose($inotifyInstance);
在上面的示例中,我们首先通过inotify_init()函数创建了一个inotify实例。然后使用inotify_add_watch()函数向该实例添加了一个监视对象,即文件/path/to/file.txt
。监视的事件类型为文件被修改或删除。如果添加监视成功,则返回一个监视描述符,否则返回false。接下来,我们使用inotify_read()函数读取inotify实例中发生的事件,并对每个事件进行处理。最后,我们使用inotify_rm_watch()函数和fclose()函数关闭inotify实例和监视描述符。