Sono all'inizio dello studio di php, ho un grosso problema che devo risolvere: devo gestire la multiutenza in un'applicazione php-mysql.
Ho impostato l'autocommit a false, in una funzione di variazione di una tabella seleziono il record da modificare con "select....for update", ma se apro un'altra sessione sulla stessa funzione mi permette di modificare il record che dovrebbe essere bloccato dalla "select for update" fatta nell'altra sessione ...
Provando il tutto direttamente in mysql, da due sessioni diverse, funziona, dalla seconda sessione si può modificare il record in questione solo dopo l'avvenuto commit nella prima sessione...
ecco la porzione di codice per recuperare i valori del record da modificare, con relativo blocco(almeno in teoria)!!
$conn= DBManager::getConnection();
$conn->autocommit(false);
$query="select * from automezzi where idAutomezzo='xx' for update";
$result=@$conn->query($query);
if ($result===FALSE or $result==NULL)
{
$conn->query('rollback');
$conn->close();
throw new DatabaseErrorException($conn->error);
}
$data=$result->fetch_assoc();
.....
nella porzione di codice per l'aggiornamento faccio commit o rollback a seconda dell'esito della query di update....
Cosa sbaglio?
grazie dell'attenzione
saluti Sandra