Mam problem z inotify w PHP, otóż pewien kod wykonuje się w pętli while:
$fd = inotify_init(); $watch_descriptor = inotify_add_watch($fd, $dir, IN_ALL_EVENTS); $connection = mysqli_connect("localhost", "testuser", "admin", "bazaTestowa") or die("DB Connection error . . ."); while (true) { $events = inotify_read($fd); if ($events[0]['wd'] === $watch_descriptor){ if ($events[0]['mask'] === IN_CREATE) { $action = "created"; InsertValue($table_name, $file_name, $action, $date, $connection); } if ($events[0]['mask'] === IN_DELETE) { $action = "deleted"; InsertValue($table_name, $file_name, $action, $date, $connection); } } elseif ($events[0]['wd'] === $watch_descriptor) { } }
i ten oto inotify nie nadąża z dodawaniem rekordów do bazy podczas jednoczesnego usuwania wielu plików. Tzn. jeśli wrzucam do śledzonego katalogu 10 plików, wszystkie dodają się po kolei z kilku milisekundowym odstępem czasowym, to do bazy doda się 10 nowych rekordów. Ale jeśli te same pliki usuwam, dzieje się to jednocześnie, inotify tak jakby nie wyrabia i pomija wykonanie dodawania rekordów do bazy, w wyniku czego zamiast info o 10 usuniętych plikach, w bazie są tylko np 4, albo 5 rekordów...
Próbowałem z usleep po InsertValue, nie działa.
Nie mam zielonego pojęcia jak to ogarnąć... Może Wy mielibyście jakiś pomysł?
