Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP a modyfikacje rekordu w mysql
grzehotnik
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ramadisu
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 27.01.2009

Ostrzeżenie: (0%)
-----


Cytat(ddiceman @ 6.02.2009, 16:39:25 ) *
Ramadisu - mylisz sie. Instrukcja UPDATE w MySQL jest operacja atomowa - do czasu jej zakonczenia blokowana jest tabela (jezeli silnik MyISAM) lub korygowany wiersz (silnik InnoDB). A zatem operacje Update wykonaja sie sekwencyjnie - jedna po drugiej, w porzadku zapisanym w kolejce zapytan (czas nadejscia). Blokada odbywa sie automatycznie
Dodatkowo blokade mozna wymusic za pomoca LOCK i UNLOCK TABLE


Cóż, to akurat jest oczywiste że zapytania pójdą wg. kolejki, wydaje mi się jednak że grzehotnikowi chodzi o sytuację kiedy np. dwóch administratorów otwiera w panelu opcję 'edytuj użytkownika' i edytuje tego samego użytkownika. Najpierw otwiera pierwszy, po chwili drugi - oboje mają te same dane w przykładowym formie uzupełnianym danymi z query. Następnie jeden z nich kilka wyślij i uznaje że rekord został zapisany tak jak on tego chciał - rzeczywiście tak jest. Natomiast drugi administrator nie mając pojęcia że ktoś aktualnie pracuje na tej części danych kilka sekund/minut później nadpisuje jego pracę, nawet jeżeli ten pierwszy powiedzmy zmieniał maila użytkownika, a drugi jego podpis (obrazowo przedstawione).
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 00:45