Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%)
|
Witam. Zrobiłem klasę która umozliwia wygodny odczyt i zapis plików w skrypcie, użyłem jej bardzo duzo wiec nie ma mowy o zamianie na inną.
Jest problem z synchronizacją plików które odczytuje: mianowicie jeśli nakładam LOCK_SH dla odczytu i LOCK_EX do zapisu, to wszystko jest dobrze do momentu gdy skrypt się zawiesi lub cokolwiek innego sie z nim stanie (np zostanie wyłączony przed zakończeniem pracy) i skrypt nie zdąży locka zdjąć, i żaden plik już nie uzyska dostępu do pliku, a każdy skrypt próbujący odczytac ten plik po prostu sie zawiesi i przytka serwer powodujac 100% zuzycie zasobów. Rozwiązanie z timeoutem tez do mnie nie przemawia bo co z tego ze skrypt sie nie zawiesi skoro nie uzyska dostepu do pliku i trzeba interweniowac recznie, a z tego co zauwazylem flock($file, LOCK_UN) wywołany z innego skryptu na plik ktory byl wczesniej zablokowany, nie działa. Rozwiązanie z tworzeniem plików .lock nie byłoby takie głupie, ale problem jest z synchronizacją.. Jeśli mam wyrażenie if (!(filelock exist)) { create filelock; } które najogolniej mowiac sprawdza czy blokujacy plik istnieje a jesli nie istnieje to tworzy plik lock dzieki czemu rezerwuje sobie dostep tez sie nie nadaje, bo jesli inny proces sie wbije miedzy instrukcje warunkowa a to co jest w jej ciele to wszystko sie rozjedzie. Jest jakis bezpieczny (ktory anuluje sie sam po pewnym czasie) sposob blokowania plików a moze jest sposob na stworzenie sekcji krytycznej w PHP? (ciągu kodu który na pewno zostanie wykonany w calosci za jednym razem i nie bedzie wymieszany z innym wątkiem) No i cudownie. Nikt nic nie wie, 3 dni wczesniej madry kolega z tego forum polecil mi przeniesienie sie z bazy danych na pliki jesli dla kazdego drzewa tworze nową tabele a teraz sie okazuje ze plików nie da sie zsynchronizować w ludzki sposob przez php i znowu musze wrocic do bazy danych i przepisywac ten durny kod jeszcze raz. Co za durny język. Kto wprowadził ten patch 5.3.2 (Usuneli sciaganie blokady pliku podczas zamkniecia skryptu) |
|
|
|
Orzeszekk Współdzielenie plików w PHP 23.10.2011, 14:16:52
Tibod A może po prostu w miejscach gdzie skrypt może się... 23.10.2011, 16:32:10
Orzeszekk Cytat(Tibod @ 23.10.2011, 17:32:10 ) ... 29.10.2011, 21:03:26 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 04:25 |