quando l'utente inizia la procedura di pagamento (quella del tipo "ma sei sicuro che lo viuoi? sicuro sicuro? guarda che poi mio sganci i soldi eh"), allora scali la quantità nel db (se usi questo metodo) e ti apri un ordine
poi se l'utente lo paga o meno, questo è un altro problema che esula da questo discorso. Perchè poi sta a chi gestisce il sistema "annullare" l'ordine se non pagato per X tempo e quindi ri-aumentare la disponibilità
Se poi il cliente ci rimette su questa cosa, prevedesse un discorso di penali da applicare all'utente che avvia un pagamento e poi non paga (tipo: prelievo da carta di credito di una somma pre-indicata)
ma tutto questo discorso dipende alla politica che il cliente vuole far applicare al sito (o te, se sei te il proprietario). Per il resto, "blocca" l'oggetto quando un utente inizia ad acquistarlo.
Cmq, il problema si sposta a questo punto sul "blocco" dell'oggetto. Nel senso, se l'affluenza per l'acquisto di un oggetto è alta, può essere che due persone provino ad acquistare l'ultimo pezzo assieme. Lì il problema lo gestisci nel db bloccando i record in maniera che solo uno dei due possa avere l'oggetto,e non l'altro (a livello di php non avresti mai tale sicurezza). Quindi attento anche a quello che fai nel db

Rispondi quotando