Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%)
|
Witam!
Mam problem z zaimplementowaniem dostepu do sekcji krytycznej i brak dobrego pomyslu jak go rozwiac. Rzecz polega na dwuetapowym dobieraniu fotografii do kategorii (tzn najpierw wybieramy fotografie, strona sie przeladowuje, wybieramy kategorie). Fotografie przeglada wiele osob jednoczesnie i chodzi o to zeby dwie osoby nie mogly przejsc jednoczesnie do drugiego etapu z ta sama fotografia. Fotografie sa pobierane z bazy, maja pole status i mozna je ustawiac po pierwszym etapie, ale to nie rozwiazuje problemu. Z kolei typowe algorytmy rozwiazywania problemu sekcji krytycznej zakladaja dostep do zmiennych wspoldzielonych przez procesy w celu roztrzygniecie ktory wchodzi do sekcji, a takie zmienne sa nie do osiegniecia w www (plik? ale tu tez trzeba kontrolowac dostep...) Moze macie jakis pomysl jak to rozwiazac? |
|
|
|
![]() |
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 99 Pomógł: 15 Dołączył: 29.07.2006 Ostrzeżenie: (0%)
|
nie bardzo rozumiem, czemu nie wystarczy status w bazie, jeżeli drugi user wybierze zablokowana fotkę to przekierujesz go spowrotem do wyboru fotek aktualizując listę dostępnych
jeżeli opcja z baza danych z jakichs przyczyn (nie jestem fachowcem) odpada to pozostaje blokada pliku, żeby uniknąć ryzyka wynikającego z czasu między fopen i flock można użyć pliku/katalogu semafora. Wybór pliku sprawdza czy jest semafor i próbuje go blokować, jak sie uda to zdjecie sprzedane takie akademickie rozwiązanie |
|
|
|
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%)
|
Poniekad sam sobie odpowiedziales
Cytat uniknąć ryzyka wynikającego z czasu między fopen i flock Tak samo moze byc z baza i updejtem/odczywaniem statusu. Ale tak sobie mysle ze mieszanka statusu i flock() powinna byc wystarczajaco silna Podsumowujac dzieki |
|
|
|
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 99 Pomógł: 15 Dołączył: 29.07.2006 Ostrzeżenie: (0%)
|
gdzieś czytałem, że napewniejsze jest stosowanie katalogów jako semaforów , operacje atomowe itp, ważne jest też sprawdzenie systemu plików, sporo ciekawostek znajdziesz na http://pl2.php.net/flock
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%)
|
Jeżeli korzystasz z bazy danych to użyj składni SELECT ... FOR UPDATE. Tutaj jest opis tej składni dla MySQL: http://dev.mysql.com/doc/refman/5.0/en/inn...king-reads.html
-------------------- |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 01:41 |