2 Stimmen

Geändertes Standard-Transaktionsverhalten von php-interbase

Ich habe einige PHP-CLI-Skripte, die lange laufen (24 Stunden und mehr), und obwohl sie regelmäßig "Commits" durchführen, hatte ich einige Probleme mit verwaisten Transaktionen - möglicherweise verursacht durch den Absturz der Skripte.

Meine Lösung bestand darin, die Transaktion wie folgt zu erstellen - es ist schon ein Jahr her, dass ich das recherchiert habe und ich kann mich nicht mehr genau an die Gründe für diese Einstellungen erinnern, aber es schien einige Probleme mit der Datenbank zu lösen.

$dbh = ibase_connect($dbhost, $dbuser, $dbpass); $trans = ibase_trans(IBASE_WRITE+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT,$dbh);

Ich habe jetzt auf php 5.3.5 aktualisiert und festgestellt, dass die Zeile ibase_trans einen Segmentierungsfehler verursacht. Auf der php ibase_trans Seite gibt es einen Hinweis:

"Das Verhalten dieser Funktion wurde in PHP 5.0.0 geändert. Der erste Aufruf von ibase_trans() gibt nicht die Standardtransaktion einer Verbindung zurück."

Meine Frage ist also, ob ich die Transaktionsargumente für die Standardtransaktion festlegen kann... Die zweite Frage ist, ob ich bei dem Versuch, dies trotzdem zu tun, völlig daneben liege!

Gracias

0voto

Marcodor Punkte 2829

Sie sollten nicht mit Standardtransaktionen arbeiten.

Definieren Sie Ihre Transaktion wie folgt:

$T = ibase_trans($params, $database);

Nachdem Sie Ihre Abfrage ausgeführt haben:

 ibase_query($T, $SQL, $Params)

oder Sie können ibase_prepare & ibase_execute verwenden.

Rufen Sie danach

ibase_commit_ret($T); // this mentain transaction active

oder

ibase_commit($T) // this commit work close transaction

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X