Hallo,
kann man irgendwie alle vorgenommenen Datenbankeingriffe rückgängig bei einem Timeout des Requests machen? Also wenn ein Script zu lange ausgeführt und nicht zu Ende verarbeitet wird, soll dann alles auf den Ausgangszustand gebracht werden. Geht das?
Gruß
DMX
Ankündigung
Einklappen
Keine Ankündigung bisher.
Transaktion Rollback bei Timeout?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Transaktion Rollback bei Timeout?
Stichworte: -
-
Normalerweise reagiert jede transaktionale Datenbank bei einem Abbruch der Verbindung mit einem Rollback. Bei persistenten Verbindungen ist es eventuell etwas schwieriger.
Davon abgesehen:
PHP: Verbindungssteuerung - Manual
-
Ok, aber wenn du ein Script aufrufst, dann verlängert sich doch nicht automatisch die execution time, nur um eine Exception zu behandeln, oder? Wenn ein Script zu lange ausgeführt wird, dann bricht er doch einfach nach Zeit x ab und fertig ist?!
Einen Kommentar schreiben:
-
Bin mir nicht sicher, ob eine Endlosschleife aufgelöst werden würde. Bei Fehlern kannst du ne Exception fangen und rollback machen. Unterstützt aber nicht jede Datenbankengine (bei mysql meines Wissens nach nur InnoDB).
Such dir ein Framework, verwende den Datenbank-Adapter, dann sieht das in etwa kurz gesagt so aus:
PHP-Code:public function insertFoo() {
try {
$dbA->startCommit();
//ganz viele queries
$dbA->commit();
return $id;
} catch (Exception $e) {
$dbA->rollBack();
throw ($e);
}
}
Einen Kommentar schreiben:
Einen Kommentar schreiben: