查询

inotify_add_watch()函数—用法及示例

「 向inotify实例添加一个新的监视对象 」


函数名称: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实例和监视描述符。

补充纠错
上一个函数: inotify_init()函数
下一个函数: ini_set()函数
热门PHP函数
分享链接