Siccome potrebbe essere utile ad altri, mi rispondo da solo in seguito ad una lettura dell'apposito capitolo dell'ottimo libro "Applicazioni web database con PHP e MySQL" di Hugh E. William & David Lane, anno 2005, editore Hops Tecniche nuove.

Originariamente inviato da Andreau
Ho letto varia documentazione sull'argomento nonché vari messaggi in questo forum, ma non sono riuscito a capire un aspetto del lock delle tabelle mysql tramite php, che è il seguente:
- se la mia applicazione web (es. sistema di prenotazioni) è costituita da più pagine/script php ognuna delle quali rappresenta uno step dell'applicazione,
- dal momento che in ogni pagina la connessione al db myqsl viene aperta all'inizio (mysql_connect) e chiusa alla fine (mysql_close),
- se in una pagina intermedia faccio il LOCK di alcune tabelle e ho bisogno che questo duri fino all'ultima pagina (ovvero fino all'ultimo step, dove faccio l'unlock), il lock mi dura effettivamente fino a quest'ultimo script? o la chiusura della connessione al db tramite mysql_close nello stesso script in cui faccio il lock causa il rilascio delle tabelle?
La seconda che avevo detto, ovvero: la chiusura della connessione con mysql_close determina il rilascio delle tabelle come con unlock, tuttavia è buona norma fare l'unlock prima della sconnessione .
Tutte le operazioni di insert a rischio di concorrenzialità devono quindi preferibilmente avvenire tramite un solo script php, a meno che non si effettui una sistema per verificare, ad ogni passaggio, che non siano state fatte nel frattempo modifiche da altri utenti (ed io in effetti ho fatto così: il primo script determina la disponibilità di camere, il secondo inserisce la prenotazione previa verifica che ci sia ancora disponibilità tramite analoga query del primo). Un altro modo consiste nell'utilizzare una o più "tabelle di appoggio" che servono ad inserire temporaneamente i nuovi record che vengono in un secondo tempo copiati nella tabella in cui devono stare (è un po' complicato da spiegare in due parole, ma se a qualcuno interessa lo posso riportare in modo più approfondito).
Ciao