查詢

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函式
分享連結