Hallo
ich habe folgendes Problem: Ich habe in einer Datenbank verschiedene Geschenke für die User hinterlegt und ein Spezialgeschenk, was nur ein einziger User (durch Zufallsgenerator) bekommen soll.
Aktuell ist mein Ablauf:
1. User loggt sich ein
2. via Zufalls generator wird ermittelt, ob User das Spezialgeschenk erhalten soll
3. wenn ja, wird in der DB (MySql) nachgeschaut, ob das Geschenk noch frei ist
4. Geschenk wird via Flag als vergeben markiert und dem User angezeigt
Mein Problem ist nun: Wenn mehrere User parallel das php Script aufrufen könnte es nun sein, daß bei Schritt 3 mehreren Usern gleichzeitig das Geschenk als frei angezeigt wird.
Wie kann ich das verhindern? Gibt es einen Weg, das man beim Prüfen ob das Geschenk noch frei ist, auch in der gleichen Abfrage das reserviert-Flag in der Tabelle setzt? Oder gibt es eine andere Lösung für das Problem?
ich habe folgendes Problem: Ich habe in einer Datenbank verschiedene Geschenke für die User hinterlegt und ein Spezialgeschenk, was nur ein einziger User (durch Zufallsgenerator) bekommen soll.
Aktuell ist mein Ablauf:
1. User loggt sich ein
2. via Zufalls generator wird ermittelt, ob User das Spezialgeschenk erhalten soll
3. wenn ja, wird in der DB (MySql) nachgeschaut, ob das Geschenk noch frei ist
4. Geschenk wird via Flag als vergeben markiert und dem User angezeigt
Mein Problem ist nun: Wenn mehrere User parallel das php Script aufrufen könnte es nun sein, daß bei Schritt 3 mehreren Usern gleichzeitig das Geschenk als frei angezeigt wird.
Wie kann ich das verhindern? Gibt es einen Weg, das man beim Prüfen ob das Geschenk noch frei ist, auch in der gleichen Abfrage das reserviert-Flag in der Tabelle setzt? Oder gibt es eine andere Lösung für das Problem?
Kommentar