- Főoldal
- Szakmai Blog
- Dupla foglalás megelőzése: miért nem elég a szabad időpont kijelzése?
Dupla foglalás megelőzése: miért nem elég a szabad időpont kijelzése?
Két ügyfél ugyanazt az időpontot választja? Ismerd meg a foglalási ütközések okát, a szerveroldali ellenőrzést és a konkurenciateszt célját.
A foglalási naptár megnyitásakor szabad időpont néhány másodperccel később már foglalt lehet. Két látogató egyszerre ugyanazt a listát láthatja, majd szinte azonos időben véglegesíthet. A felületen eltüntetett foglalógomb ezért önmagában nem akadályozza meg a dupla foglalást.
A véglegesítéskor újra ellenőrizni kell
A szervernek a mentés pillanatában is meg kell vizsgálnia a szolgáltatás, a munkatárs és az időintervallum érvényességét. A foglalás nem csak kezdési idő: a teljes időtartam és a szükséges puffer is ütközhet más bejegyzéssel. A 10:00–11:00 foglalással például a 10:30–11:30 időszak is átfed.
Az ellenőrzés és a rögzítés közötti versenyhelyzetet az adatmodellhez illő adatbázis-megoldással kell kezelni. Egy tranzakció használata önmagában nem bizonyítja, hogy az intervallumok védve vannak. A zárolás, az esetleges slotfoglalás és az egyediség együtt értelmezendő.
Mit vizsgáljon a konkurenciateszt?
- Két párhuzamos kérés ugyanarra a munkatársra és időre.
- Eltérő kezdési idővel, de átfedő időtartammal érkező kérések.
- Manuális adminfoglalás és vendégfoglalás egy időben.
- Duplán elküldött kérés és ismételt kattintás.
- Lejáró ideiglenes foglalás, ha van ilyen működés.
- Szünet vagy távollét határára eső szolgáltatás.
A vesztes kérés is kapjon használható választ
Ha egy másik ügyfél gyorsabb volt, az oldal ne adjon általános hibát és ne veszítse el fölöslegesen a megadott adatokat. Jelezze, hogy az időpont közben betelt, és kínáljon friss választási lehetőséget. A sikeres visszaigazolás kizárólag ténylegesen létrejött foglaláshoz tartozzon.
Az értesítő levél küldésének hibája külön kérdés: emiatt ne jöjjön létre második foglalás egy újrapróbáláskor. A foglalás azonosítója és állapota legyen visszakereshető az adminban.
A párhuzamos mentésekhez választott adatbázis-viselkedést a MySQL zárolási dokumentációjával és a tényleges izolációs beállításokkal együtt szükséges ellenőrizni.
Rendszerválasztáshoz lásd az időpontfoglaló-ellenőrzőlistát. A DarkCode Booking bevezetése előtt is szükséges a konkrét tárhelyen végzett működési próba.
Segítségre van szükséged?
Ha hasonló kihívással küzdesz, vagy egyedi fejlesztést szeretnél, beszéljük át a részleteket.
Ajánlatot kérek