Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sekcja krytyczna, jak rozwiązujecie ten problem w www?
abusiek
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
rybik
post
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 smile.gif jak nie może blokować lub zablokowany to wraca do zdjęć

takie akademickie rozwiązanie smile.gif nie krzyczcie jak bredzę
Go to the top of the page
+Quote Post
abusiek
post
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 smile.gif

Podsumowujac dzieki smile.gif
Go to the top of the page
+Quote Post
rybik
post
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
Go to the top of the page
+Quote Post
SirZooro
post
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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 01:41