Portál AbcLinuxu, 15. července 2025 12:31


Dotaz: MYSQL - přístup k jedné větě z víc klientů

13.12.2008 09:25 jan.rok | skóre: 21
MYSQL - přístup k jedné větě z víc klientů
Přečteno: 242×
Odpovědět | Admin

Zdravím zkušenější!

Jak se při programování v PHP řeší situace, kdy by k jedné větě v MySQL tabulce přistupovalo víc uživatelů najednou? Musí se to ošetřovat v PHP nebo se o to postará sám MySQL server?

Dosud jsem přístup k MySQL datům pomocí PHP zkoušel vždycky jako singl user, ale co kdybych chtěl jednoduchou evidenci osob naprogramovat tak, aby s ní mohlo pracovat najednou víc lidí?

  Děkuju za rady nebo nasměrování.

J.Rok

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 13.12.2008 15:58 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: MYSQL - přístup k jedné větě z víc klientů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Taková sitace se řeší buďto transakcemi nebo zamykáním (řádků, případně celých tabulek).
Heron
finc avatar 13.12.2008 19:03 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: MYSQL - přístup k jedné větě z víc klientů
Odpovědět | | Sbalit | Link | Blokovat | Admin

K tomu slouží tzv. optimistický či pesimistický zámek.

Optimistický zámek používá verzování. Tabulka obsahuje navíc jeden sloupec s číslem, které se při káždém update inkrementuje.

Příklad pro editaci (optimistický lock):

Načte se uživatel, kterého edituji i s tímto sloupcem. Při ukládání je zpětně kontrolováno, zda v DB je stejné číslo. Pokud ano, záznam se uloží a číslo se zvýší o 1.

Druhý uživatel, který záznam otevřel ve stejnou dobu bude mít při uložení problém, protože dané číslo bude jiné.

Editace (pesimistický lock):

Načteš záznam s lock read. Toto lze zaručit u typu tabulek, které podporují transakci na úrovni řádku (viz. třeba InnoDB). Druhý uživatel, který by chtěl daný záznam otevřít bude mít problém, jelikož na něj již kouká jiný uživatel.

----------------------

Co se týče podpory v PHP, tak mám pocit, že žádná není. Možná na základě toho co jsem napsal prolést internet a dohledat nějaké řešení. Já to osobně používám Javu, kde tyto věci řeší třeba Hibernate, takže nedokážu řící jak je na tom samotná podpora v MySQL.

Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.