![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 8.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam pytanie odnośnie modyfikacji rekordów w mysql za pomocą PHP.
Jeśli robię skrypt, który modyfikuje powiedzmy opis jakiegoś produktu w tabeli i nadaję prawo do modyfikacji kilku użytkownikom, co się dzieje jeśli dwie lub więcej osób będą chciały zmodyfikować dokładnie ten sam rekord w dokładnie tym samym czasie? Czy istnieje funkcja w PHP, która pozwala zablokować modyfikowany rekord? Jak obejść taką sytuacje? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jezeli jest tak, jak mowisz, to oczywiscie masz racje. Z drugiej zas strony na podstawie
Cytat zmodyfikować dokładnie ten sam rekord w dokładnie tym samym czasie oraz Cytat Podczas zapisu do bazy za pomocą jakiejś funkcji(nie pamiętam nazwy) blokuje dany rekord, a po zapisie odblokowuje go. wnioskuje, ze jednak chodzilo o blokowanie danych, tak by naraz tylko jeden proces mogl zmodyfikowac wierz/tabele co nie jest oczywistoscia. Fakt, ze zapytania przychodza kolejno nie implukuje tego, ze jedno jest wykonywane nim skonczy sie drugie - sytuacje taka mozesz zobaczyc, gdy nie zalozysz na otwarty plik (fopen()) blokady do zapisu (flock()) i sprobujesz zapisywac do pliku jednoczesnie, nieco dluzszy ciag znakow, ale o roznej dlugosci. Najprawdopodobniej wtedy plik ulegnie uszkodzeniu bowiem system plikow standardowo nie traktuje operacji zapisu jako atomowej i mysle, to wlasnie o to bylo pytanie. MySQL zapewnia spojnosc danych tylko dlatego, ze wlasnie naklada blokady na wiersz/tabele (nie zas dlatego, ze kolejkuje zapytania) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 20:58 |