![]() Mailinglisten-Archive |
Hallo Oliver Am 20.01.2012 um 09:55 schrieb Oliver Baran: > User A kommt genau gleichzeitig mit User B auf den Shop. Genau gleichzeitig gibt es nicht. Eine Instanz liest immer zuerst. > Das Script holt sich alle Daten aus der Datenbank bei User A und B. > Nun möchte User A das Produkt P kaufen genau wie User B. > Aber von dem Produkt P ist nur noch eines verfügbar. > Beide Scripte sehen das es von dem Produkt noch eines gibt, und führen > die Aktion aus. > Nun wird innerhalb des Scriptes die Menge um eines reduziert. Bei > beiden Usern steht nun in dem Script die Verfügbarkeit des Produktes P > mit 0. > Diese wird nun auch in die Datenbank zurück geschrieben. Bevor das Skript den Artikel in den Warenkorb legt, muss es nochmals prüfen, ob die benötigte Menge immer noch vorhanden ist. Und anschliessend sofort abbuchen oder den Benutzer informieren. Diesen beiden Vorgänge kannst du in einer Transaktion zusammenfassen, dann kann kein anderes Skript dazwischen "funken". Stichworte: MySQL, Transaktion, ACID. Gruß, Hans
php::bar PHP Wiki - Listenarchive