inotify_read

(PECL inotify >= 0.1.2)

inotify_read从 inotify 实例读取事件

说明

inotify_read(resource $inotify_instance): array

从 inotify 实例读取 inotify 事件。

参数

inotify_instance

inotify_init()返回的资源

返回值

返回 inotify 事件数组。在没有待处理事件或 inotify_instance 非阻塞时返回 false。事件发生时都会返回包含以下键的数组:

  • wd 是由 inotify_add_watch() 返回的监听描述符
  • mask 是 events 的位掩码
  • cookie 是连接相关事件(例如:IN_MOVE_FROMIN_MOVE_TO)的唯一 id
  • name 是文件名(例如:监听目录中被修改的文件)

参见

添加备注

用户贡献的备注 2 notes

up
7
qriff at hotmail dot com
11 years ago
<?php$wd_constants = array(1 => array('IN_ACCESS','File was accessed (read)'),2 => array('IN_MODIFY','File was modified'),4 => array('IN_ATTRIB','Metadata changed (e.g. permissions, mtime, etc.)'),8 => array('IN_CLOSE_WRITE','File opened for writing was closed'),16 => array('IN_CLOSE_NOWRITE','File not opened for writing was closed'),32 => array('IN_OPEN','File was opened'),128 => array('IN_MOVED_TO','File moved into watched directory'),64 => array('IN_MOVED_FROM','File moved out of watched directory'),256 => array('IN_CREATE','File or directory created in watched directory'),512 => array('IN_DELETE','File or directory deleted in watched directory'),1024 => array('IN_DELETE_SELF','Watched file or directory was deleted'),2048 => array('IN_MOVE_SELF','Watch file or directory was moved'),24 => array('IN_CLOSE','Equals to IN_CLOSE_WRITE | IN_CLOSE_NOWRITE'),192 => array('IN_MOVE','Equals to IN_MOVED_FROM | IN_MOVED_TO'),4095 => array('IN_ALL_EVENTS','Bitmask of all the above constants'),8192 => array('IN_UNMOUNT','File system containing watched object was unmounted'),16384 => array('IN_Q_OVERFLOW','Event queue overflowed (wd is -1 for this event)'),32768 => array('IN_IGNORED','Watch was removed (explicitly by inotify_rm_watch() or because file was removed or filesystem unmounted'),1073741824 => array('IN_ISDIR','Subject of this event is a directory'),1073741840 => array('IN_CLOSE_NOWRITE','High-bit: File not opened for writing was closed'),1073741856 => array('IN_OPEN','High-bit: File was opened'),1073742080 => array('IN_CREATE','High-bit: File or directory created in watched directory'),1073742336 => array('IN_DELETE','High-bit: File or directory deleted in watched directory'),16777216 => array('IN_ONLYDIR','Only watch pathname if it is a directory (Since Linux 2.6.15)'),33554432 => array('IN_DONT_FOLLOW','Do not dereference pathname if it is a symlink (Since Linux 2.6.15)'),536870912 => array('IN_MASK_ADD','Add events to watch mask for this pathname if it already exists (instead of replacing mask).'),2147483648 => array('IN_ONESHOT','Monitor pathname for one event, then remove from watch list.'));$path = $argv[1];$fd = inotify_init();stream_set_blocking($fd, 0);$watch_descriptor = inotify_add_watch($fd, $path, IN_ALL_EVENTS);$poll = 0;while (true) {  $ecount = 0;  $fcount = 0;  // Poll for queued events, generated meanwhile  // Because while (true) { } has some seriously bad mojo  sleep(5);  $poll++;  $events = inotify_read($fd);  if ($events) $ecount = count($events);  echo "=== ".date("Y-m-d H:i:s")." inotify poll #$poll contains ".$ecount." events";  if ($events) echo ":";  echo "\n";  if ($events) {        foreach ($events as $event) {                $fcount++;                echo "        inotify Event #".$fcount." - Object: ".$event['name'].": ".$wd_constants[$event['mask']][0]." (".$wd_constants[$event['mask']][1].")\n";        }  }}inotify_rm_watch($fd, $watch_descriptor);fclose($fd);?>
up
3
lingtalfi
10 years ago
once the watch is read, it is removed from the queue.(inotify_queue_len will return 0)
To Top