<?php
// Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ inotify
$fd = inotify_init();
// ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»Π° __FILE__ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΊΠΈ mtime)
$watch_descriptor = inotify_add_watch($fd, __FILE__, IN_ATTRIB);
// ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅
touch(__FILE__);
// Π§ΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΡ
$events = inotify_read($fd);
print_r($events);
// Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° inotify Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ inotify_read():
// - ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ stream_select() Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° $fd:
$read = array($fd);
$write = null;
$except = null;
stream_select($read, $write, $except, 0);
// - ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ stream_set_blocking() Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° $fd
stream_set_blocking($fd, 0);
inotify_read($fd); // ΠΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ
// - ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ inotify_queue_len(), ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ ΠΏΡΡΡΠ° Π»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ±ΡΡΠΈΠΉ
$queue_len = inotify_queue_len($fd); // ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ > 0, ΡΡΠ½ΠΊΡΠΈΡ inotify_read() Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
// ΠΠ°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠΌ __FILE__
inotify_rm_watch($fd, $watch_descriptor);
// ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ inotify
// ΠΡΠΎ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ
fclose($fd);
?>
ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π°:
array(
array(
'wd' => 1, // Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ $watch_descriptor
'mask' => 4, // Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π±ΠΈΡ IN_ATTRIB
'cookie' => 0, // Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
// ΡΠΎΠ±ΡΡΠΈΡ IN_MOVE_FROM ΠΈ IN_MOVE_TO)
'name' => '', // ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
// Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅)
),
);