Sto usando la libreria mysqli di PHP. Inserimenti e aggiornamenti del database sono sempre in un blocco try-catch. Il successo di ogni query viene immediatamente verificato (if $result === false
) e qualsiasi errore genera un'eccezione. Il catch chiama mysqli_rollback()
ed esce con un messaggio per l'utente.Con PHP e MySQL, dovresti controllare i fallimenti di rollback?
La mia domanda è, dovrei preoccuparmi di controllare il valore di ritorno di mysqli_rollback()
? In tal caso, e il rollback fallisce, quali azioni dovrebbe intraprendere il codice?
Ho difficoltà a capire come un rollback potrebbe fallire (salvo qualche bug atroce in MySQL). E poiché PHP sta per uscire comunque, chiamare il rollback sembra quasi superfluo. Penso certamente che dovrebbe essere nel codice per chiarezza, ma quando PHP uscirà chiuderà la connessione a MySQL e le transazioni non vincolate verranno automaticamente ripristinate.
Se stai cercando un esempio concreto con probabilità realistica- Il tuo php può essere eseguito su una macchina diversa da quella su cui è eseguito il database (ad esempio, server di database separato). La rete io ha un sacco di scenari "funziona ora ma non funziona il secondo successivo". Naturalmente potrebbe accadere con entrambi sulla stessa macchina, solo molto meno probabile. – goat
Interessante! Sembra che le implicazioni siano le stesse in questo scenario: anche se la chiamata di rollback fallisce, la sessione client MySQL di PHP terminerà e il rollback avverrà. Quindi forse vale la pena registrare l'errore come indicatore di problemi più grandi, ma non devi preoccuparti dell'integrità dei dati. – giskard22