Mailinglisten-Archive |
Aloha, ich hab bei mir zu Hause: php 4.0.5 / linux als Modul im Indianer sapbd 7.3.0 / linux mit odbc_pconnect() verbunden Die DB wird =FCber odbc angesprochen (dazwischen liegt noch die db_odbc.php aus der phplib als DB-abstraktionsklasse ...) Folgendes Problem taucht auf (ansonsten funktioniert es einwandfrei ;)) In einem Script schalte ich das autocommit aus. - Wenn alle inserts fehlerfrei durchliefen mach ich ein commit : funktioniert. - Wenn ein Fehler bei den inserts auftaucht, dann ruft die phplib ja = die halt()=20 funktion auf und das Script wird mit die() beendet. Dabei wird aber KEIN Rollback auf der DB durchgef=FChrt (das ist = meiner Ansicht nach der erste Bug). Dann wollte ich oben erw=E4hnte halt() Funktion =E4ndern: Abfrage ob autocommit aktiviert ist mit folgendem sinngemaessen code: if (odbc_autocommit(link) =3D=3D false ) { odbc_rollback(link); die(...); } else { die(...); } Sobald ich IRGENDWO odbc_autocommit(link); in meim Script stehen habe, zeigt mir Squid nur noch "zero sized reply" an. Im Webserver Log wird nicht mal ein Eintrag erzeugt ! (2. Bug ??) Ok, also hab ich generell in die halt - Funktion ein rollback vor dem = die gemacht ---> unsch=F6n, aber funktioniert soweit. Jetzt der Hammer: 1. Script aufgerufen, autocommit off, inserts, commit --> Werte in der = DB. Anderes Script aufgerufen, inserts, script fertig --> Transaktion = wartet auf commit, obwohl ich in dem andern Script ja gar nicht autocommit ausgeschaltet habe ?!? (3. Bug) ??? Hat jemand anders schon mal =E4hnliche Probleme gehabt ? Scheinbar funktioniert a) autocommit(link,[true/false]) nicht ohne den 2. Parameter und b) wirkt sich autocommit auch auf alle persistenten Verbindungen aus (und nicht nur da wo es aufgerufen wurde) c) Erfolgt beim Scriptende kein rollback, wenn odbc_commit() nicht aufgerufen wurde. Viele Gr=FC=DFe, Mathias
php::bar PHP Wiki - Listenarchive