Wenn ich an einer anderen Stelle im Skript erneut eine Verbindung mit denselben Daten aufbauen möchte, wird ein Zeiger auf die bereits offene Verbindung zurückgegeben. Es handelt sich hier also um ein Singleton. In PHP erfolgt ein einfacher Verbindungsaufbau durch den Befehl oci_connect($username, $passwort, $db)
. Für den Fall, dass man eine weitere Verbindung mit den gleichen Zugangsdaten benötigt, diese aber unabhängig von der bereits geöffneten Verbindung sein soll, kann man das mit folgendem Befehl bewerkstelligen: oci_new_connect($username, $passwort, $db)
. Da einfache Verbindungen, wie bereits erwähnt, bei wiederholten Verbindungen nicht performant sind, sollte man in diesem Fall auf persistente Verbindungen bauen, die nach Skriptende nicht automatisch geschlossen, sondern in einem Cache vorgehalten werden: oci_connect($username, $passwort, $db)
.
(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=)) (CONNECT_DATA= (SERVER = ) (SERVICE_NAME=))
$tns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))';
FOOBAR = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
oci_pconnect($username, $passwort, 'FOOBAR');
auf die Datenbank zugreifen. Ich persönlich ziehe diese Methode, wenn möglich, den anderen Methoden vor. Man spart sich Tipparbeit, verringert die Fehleranfälligkeit und hat den enormen Vorteil, dass man bei Änderungen am Datenbanksystem lediglich die tnsnames.ora anpassen muss, anstatt in allen Applikationen, die möglicherweise auf diese Datenbank zugreifen, die Parameter händisch anzupassen.
Am Ende jedes Skripts werden mit oci_connect() oder oci_new_connect() geöffnete Verbindungen automatisch geschlossen, können aber auch explizit durch den Aufruf von oci_close() beendet werden. In beiden Fällen werden Transaktionen, die nicht committet wurden, zurückgesetzt; ein Rollback erfolgt auch bei persistenten Verbindungen am Ende eines Skripts.
Weiter mit: Teil 5
Alle Teile: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5, Teil 6