[PHP] Inotify i problem przy usuwaniu wielu plików na raz |
[PHP] Inotify i problem przy usuwaniu wielu plików na raz |
6.01.2020, 18:10:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.11.2019 Ostrzeżenie: (0%) |
Cześć,
Mam problem z inotify w PHP, otóż pewien kod wykonuje się w pętli while:
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ł? |
|
|
6.01.2020, 18:12:26
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Jestes na 100% pewien ze to wina bazy? Sprawdzales? Bo moze twoja petla while najzwyklej w swiecie gubi eventy
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
6.01.2020, 18:42:01
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.11.2019 Ostrzeżenie: (0%) |
Jestem prawie pewien, że baza jest ok.
Tak samo jestem prawie pewien, że właśnie pętla gubi eventy, a bardziej wyobrażam sobie to w ten sposób, że podczas usuwania tych 10 plików jednocześnie, pętla zdąży się wykonać tylko 4-5 razy. Podejrzewam, że to jest "najzwyklejszy w świecie" problem, dlatego też piszę w dziale Przedszkole, ale nie mogę sobie z tym poradzić... Ten post edytował nosbyd 6.01.2020, 18:42:36 |
|
|
6.01.2020, 19:28:44
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Spróbuj zalogować sobie do pliku wartości z `$events[0]['mask']` np:
Kod file_put_contents('data.log', $events[0]['mask'].PHP_EOL, FILE_APPEND); po if ($events[0]['wd'] === $watch_descriptor){ Aa. i no czy przypadkiem nie ma w `$events` większej ilości eventów o plikach? Bo może jest tak że jest tam pakowane np. event dla 3 plików bo one weszły w "transakcję" Ten post edytował Pyton_000 6.01.2020, 19:31:15 |
|
|
6.01.2020, 21:02:24
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.11.2019 Ostrzeżenie: (0%) |
może jest tak że jest tam pakowane np. event dla 3 plików bo one weszły w "transakcję" Tak jest, sprawdziłem, w $events jest czasem po jednym, czasem po kilka eventów o plikach. Dorzuciłem coś takiego:
i konsola wyświetliła kilka plików, Next, kilka plików, Next... Spróbuję więc wrzucić wszystko w tego foreach'a, zastanawiam się tylko, czy nie będzie tu za dużo pętli w pętlach... Dam jeszcze znać, czy działa, dzięki za dotychczasową pomoc |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 12:51 |