Ciao a tutti,
vorrei gestire la prenotazione concorrente dei posti in un cinema mediante php e MySQL.
Il mio dubbio è inerente il momento in cui effettuare il lock sulla tabella dei posti per evitare che due persone possano contemporaneamente prenotare gli stessi posti.
Mettiamo che esistano 4 posti disponibili: è indubbio possano avvenire due differenti prenotazioni da due posti ciascuna in contemporanea, mentre non possono avvenire due prenotazioni da 3 posti ciascuna.
La procedura dovrebbe essere la seguente:
1. inserimento del numero dei posti desiderati;
2. inserimento dei propri dati;
3. pagina di conferma dati inseriti;
4. pagamento;
5. invio conferma operazione.
Se locco la tabella dei posti tra il punto 1 e 2 e la rilascio solo dopo il 5 sto sicuro che non può succedere alcun errore.
Ma se i posti disponibili sono 50 e io locco tutto per una prenotazione da un posto e tale utente ci mette mezz'ora a finire la procedura.. il sistema non risulta assolutamente efficente, tutti gli altri utenti risultano inutilmente bloccati (tra l'altro ho anche un mancato guadagno).
Un'altra idea potrebbe essere quella di scalare direttamente il numero dei posti desiderati dal totale disponibile dopo il punto 1 e non loccare la tabella. Se si arriva a fine procedura lascio inalterato il numero di posti disponibili, altrimenti lo reincremento.
Ma come fa il sistema a capire che la prenotazione non è stata completata se l'utente non clicca su annulla ma chiude direttamente il browser?
Confido in un aiuto o in una indicazione di qlke link dal quale scaricare slide, manuali, ecc..
Ciao e grazie!