Laufzeit-Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

OCI8-Konfigurationsoptionen
Name Standard Veränderbar Changelog
oci8.connection_class "" PHP_INI_ALL Verfügbar seit PECL OCI8 1.3.
oci8.default_prefetch "100" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.
oci8.events Off PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.3.
oci8.max_persistent "-1" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.
oci8.old_oci_close_semantics Off PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1. Ab PHP 8.1.0 veraltet.
oci8.persistent_timeout "-1" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.
oci8.ping_interval "60" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.
oci8.prefetch_lob_size "0" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 3.2.
oci8.privileged_connect Off PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.
oci8.statement_cache_size "20" PHP_INI_SYSTEM Verfügbar seit PECL OCI8 1.1.

Hier eine kurze Erklärung der Konfigurationsoptionen:

oci8.connection_class string

Dieser benutzerdefinierte Text sollte immer festgelegt werden, wenn Oracle Database Resident Connection Pooling (DRCP) verwendet wird. Er ermöglicht die Partitionierung des DRCP-Verbindungspools, sodass persistente OCI8-Verbindungen einer Anwendung Datenbanksessions aus einem vorherigen PHP-Skript wiederverwenden können, was eine bessere Skalierbarkeit ermöglicht. Wenn eine Anwendung einen Datenbankpool-Prozess verwendet, der zuvor mit einer anderen Verbindungsklasse verwendet wurde, werden die Session-Einstellungen, z. B. das standardmäßige Oracle-Datumsformat, zurückgesetzt. Dies verhindert eine versehentliche gemeinsame Nutzung von Informationen zwischen verschiedenen Anwendungen.

Der Wert kann zur Laufzeit vor dem Aufbau der Verbindung mit ini_set() gesetzt werden.

Um DRCP zu verwenden, muss OCI8 gegen Bibliotheken von Oracle 11g (oder höher) gelinkt sein und die Datenbank muss Oracle 11g (oder höher) sein. Der DRCP-Verbindungspool muss in der Datenbank aktiviert sein, die oci8.connection_class muss für alle Webserver, auf denen dieselbe Anwendung läuft, auf dieselbe Zeichenkette gesetzt werden und die OCI8-Verbindungszeichenkette muss angeben, dass ein Server mit einem Pool verwendet werden soll. Die Anwendung sollte persistente Verbindungen verwenden.

oci8.default_prefetch int

Diese Option legt die Standard-Anzahl der zusätzlichen Zeilen fest, die automatisch abgerufen und zwischengespeichert werden, wenn eine Low-Level-Anforderung von Daten aus der Datenbank erfolgt. Das Setzen des Wertes 0 deaktiviert das Prefetching.

Der Prefetch-Wert ändert nicht die Anzahl der Zeilen, die Funktionen wie oci_fetch_array() an den Benutzer zurückgeben; das Prefetching und Caching von Zeilen wird intern in OCI8 verwaltet.

Der Wert kann pro Anweisung mit oci_set_prefetch() vor der Ausführung der Anweisung gesetzt werden.

In PHP 5.3 (PECL OCI8 1.3.4) wurde der Standardwert von 10 auf 100 erhöht.

In PHP 5.3.2 (PECL OCI8 1.4) wurde der einstellbare Mindestwert von 1 auf 0 reduziert, wodurch das Prefetching abgeschaltet werden kann.

Bei Verwendung von Oracle Database 12c (oder höher) kann der von PHP festgelegte Prefetch-Wert von Oracles Client-Konfigurationsdatei oraaccess.xml überschrieben werden. Siehe in der Oracle-Dokumentation für weitere Details.

Hinweis: Ein größerer Prefetch kann zu einer verbesserten Leistung führen, allerdings auf Kosten eines erhöhten Speicherverbrauchs. Bei Abfragen, die große Datenmengen zurückgeben, kann der Leistungsvorteil deutlich sein.

oci8.events bool

Wenn diese Option aktiv ist (On), kann PHP über FAN- (Fast Application Notification) Datenbankereignisse benachrichtigt werden.

Ohne FAN kann es bei einem plötzlichen Ausfall einer Datenbankinstanz oder eines Rechnerknotens dazu kommen, dass PHP-Anwendungen beim Warten auf eine Datenbankantwort hängen bleiben, bis der TCP-Timeout abgelaufen ist. Mit FAN-Ereignissen werden PHP-Anwendungen schnell über Fehler informiert, die Datenbankverbindungen betreffen. Die OCI8-Erweiterung entfernt unbrauchbare Verbindungen aus dem persistenten Verbindungscache.

Wenn diese Option verwendet wird (On), muss die Datenbank auch konfiguriert werden, FAN-Ereignisse zu melden.

Die FAN-Unterstützung ist verfügbar, wenn OCI8 gegen Bibliotheken von Oracle 10gR2 (oder höher) gelinkt ist und mit einer Oracle-Datenbank 10gR2 (oder höher) verbunden ist.

oci8.max_persistent int

Die maximale Anzahl persistenter OCI8-Verbindungen pro PHP-Prozess. Wenn diese Option auf -1 gesetzt ist, ist die Anzahl der Verbindungen nicht limitiert.

oci8.old_oci_close_semantics bool

Diese Option kontrolliert das Verhalten der Funktion oci_close(). Wenn sie aktiviert wird, zeigt der Aufruf von oci_close() keine Reaktion; die Verbindung wird nicht vor dem Ende des Skripts beendet. Die Funktion existiert nur aus Gründen der Abwärtskompatibilität. Wenn Sie in eine Situation kommen, in der Sie diese Option aktivieren müssen, sei Ihnen dringend empfohlen, stattdessen alle oci_close()-Aufrufe aus Ihrer Anwendung zu entfernen.

oci8.persistent_timeout int

Die maximale Dauer (in Sekunden), über die der angegebene Prozess eine ungenutzte persistente Verbindung aufrechterhalten darf. Ist diese Option auf -1 gesetzt, werden ungenutzte persistente Verbindungen aufrecht erhalten, bis der PHP-Prozess endet oder die Verbindung mittels oci_close() ausdrücklich geschlossen wird.

Hinweis: In PHP ist das Ablaufen ungenutzter Ressourcen nicht alarmgesteuert. Es erfolgt, wenn PHP die Verarbeitung eines Skripts beendet und den Zeitstempel der zuletzt verwendeten Ressourcen überprüft. Dies führt zu dem Paradoxon, dass ungenutzte Verbindungen nur geschlossen werden können, wenn es im PHP-Prozess irgendeine Aktivität gibt (wenn auch nicht unbedingt OCI8-bezogen). Wenn es mehr als einen PHP-Prozess gibt, muss jeder Prozess einzeln aktiviert werden, um den Ablauf der seiner ungenutzten Ressourcen auszulösen. Die Einführung von Database Resident Connection Pooling (DRCP) in Oracle 11g behebt die Speicher- und Ressourcenprobleme, die oci8.max_persistent und oci8.persistent_timeout zuvor versuchten, zu beheben.

Hinweis: In PHP 5.3 (PECL OCI8 1.3) können persistente Verbindungen mit oci_close() geschlossen werden.

oci8.ping_interval int

Die Dauer (in Sekunden), die vergehen muss, bevor ein Ping während eines oci_pconnect() abgeschickt wird. Ein Ping stellt sicher, dass die Datenbankverbindung gültig ist. Wenn dies auf 0 gesetzt ist, werden persistente Verbindungen bei jeder Verwendung von oci_pconnect() gepingt. Um Pings völlig zu deaktivieren, muss die Option auf -1 gesetzt werden.

Hinweis: Das Deaktivieren von Pings lässt oci_pconnect() mit höchster Effizienz arbeiten, kann aber dazu führen, dass PHP unbrauchbare Verbindungen nicht bemerkt, die z. B. entstehen können, wenn das Netzwerk unterbrochen wird oder der Oracle-Server bei bestehender Verbindung heruntergefahren wird. Konsultieren Sie die Dokumentation zu oci_pconnect(), um weitere Informationen zu erhalten.

oci8.prefetch_lob_size int

Dies ist ein Optimierungsparameter, der die interne Pufferung von LOB-Daten betrifft. Wenn dieser Wert erhöht wird, kann dies die Leistung beim Abrufen von kleineren LOBs verbessern, indem die Anzahl der Umläufe (Roundtrips) zwischen PHP und der Datenbank reduziert wird. Die Speichernutzung wird sich ändern.

Der Wert betrifft LOBs, die als Instanzen von OCILob zurückgegeben werden und auch solche die unter Verwendung von OCI_RETURN_LOBS zurückgegeben werden.

Der Wert kann bei jeder Anweisung mittels oci_set_prefetch_lob() vor der Ausführung der Anweisung festgelegt werden.

Hinweis: Zu verwenden mit Oracle Database 12.2 oder höher.

oci8.privileged_connect bool

Diese Option aktiviert privilegierte Verbindungen unter Verwendung externer Berechtigungen (OCI_SYSOPER oder OCI_SYSDBA).

Hinweis: Wenn diese Option auf On gesetzt ist, können Webserver-Skripte, die über die entsprechenden Systembenutzerrechte verfügen, eine Verbindung zur Datenbank mit diesen Rechten herstellen, ohne ein Passwort für die Datenbank angeben zu müssen. Dies kann ein Sicherheitsrisiko darstellen.

oci8.statement_cache_size int

Diese Option aktiviert den Anweisungs-Cache und definiert, wie viele Anweisungen gecacht werden. Um das Caching zu deaktivieren, muss die Option auf 0 gesetzt werden.

Durch das Anweisungs-Caching entfällt die Notwendigkeit, den Anweisungstext an die Datenbank zu übermitteln, und es müssen auch keine Metadaten über die Anweisung zurück an PHP übertragen werden. Dies kann die Gesamtleistung des Systems in Anwendungen, die Anweisungen während der Lebensdauer einer Verbindung wiederverwenden, deutlich verbessern. Einige zusätzliche Datenbank-"Cursor" werden möglicherweise unter der Annahme offen gehalten, dass Anweisungen wiederverwendet werden.

Setzen Sie diesen Wert auf die Größe der aktuellen Menge an Anweisungen, die von Ihrer Anwendung verwendet wird. Die Einstellung eines zu kleinen Wertes kann dazu führen, dass Anweisungen aus dem Cache entfernt werden, bevor sie wiederverwendet werden.

Diese Option ist vor allem bei persistenten Verbindungen von Nutzen.

Wenn Sie Oracle Database 12c (oder höher) verwenden, kann dieser Wert von Oracles Client-Datei oraaccess.xml überschrieben und automatisch eingestellt werden. Siehe die Oracle-Dokumentation für weitere Details.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

How to overcome Safari's iframe cookie block?

To overcome Safari's iframe cookie block, you can use the SameSite=None; Secure cookie attribute in conjunction with a third-party domain that sup ...

Geschrieben von Joniemartinez am 21.12.2024 13:28:24
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Probleme mit speichern in Datenbank in französisch

Les erreurs fréquentes lors de l'enregistrement de données dans une base de données incluent des problèmes de connexion, des erreurs de syntax ...

Geschrieben von Alice12 am 18.12.2024 05:07:21
Forum: PHP Developer Forum
Gibt es eine API zum Abrufen von PHP-Code-Referenzen?

PHP.net bietet eine umfassende Online-Dokumentation für PHP. Es gibt keine offizielle API zum Abrufen von PHP-Dokumentationen direkt, aber du kan ...

Geschrieben von Alice12 am 18.12.2024 05:03:27
Forum: PHP Developer Forum
Ein data POST via Curl funktioniert nicht.

It looks like your PHP cURL request isn't working because you're not properly setting the CURLOPT_CUSTOMREQUEST option; it should be a string, so ...

Geschrieben von noah1600 am 16.12.2024 04:16:13
Forum: PHP Developer Forum