Mysql
 sql >> Database >  >> RDS >> Mysql

Come prevenire la condizione di razza nella prenotazione di hotel online

Una soluzione consiste nell'aggiungere due colonne a una tabella nel database. Una colonna è l'ID sessione o l'ID utente o qualsiasi altra cosa dell'utente a cui viene offerta la stanza. La seconda colonna è un timestamp che indica quando l'offerta scadrà.

Quindi, nella tua app, mostra solo le stanze virtuali che hanno un timestamp scaduto nella colonna di attesa. (Impostare il timestamp iniziale su 0 in modo che inizi scaduto.) Quando viene selezionata una stanza, controllare di nuovo la colonna. Se è presente un timestamp non scaduto, l'utente riceve un messaggio "scusa, eri troppo lento". Altrimenti, inserisci un timestamp lì per 15 minuti nel futuro o qualsiasi altra cosa e procedi.

Lo vedi spesso sui siti di viaggi e sui siti di acquisto di biglietti dove dice qualcosa del tipo "Ti teniamo questi posti per altri 14 minuti. Per favore completa la transazione entro allora o verrà rilasciato blah blah blah".