Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
Name | Standard | Veränderbar | Changelog |
---|---|---|---|
oci8.connection_class | "" | PHP_INI_ALL | Verfügbar seit PHP 5.3 (PECL OCI8 1.3). |
oci8.default_prefetch | "100" | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.events | Off | PHP_INI_SYSTEM | Verfügbar seit PHP 5.3 (PECL OCI8 1.3). |
oci8.max_persistent | "-1" | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.old_oci_close_semantics | Off | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.ping_interval | "60" | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.privileged_connect | Off | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | Verfügbar seit PHP 5.1.2 (PECL OCI8 1.1). |
Hier eine kurze Erklärung der Konfigurationsoptionen:
oci8.connection_class
string
This user defined text is used by Oracle 11g Database Resident Connection Pooling (DRCP) connections to sub-partition the connection pool. It allows OCI8 persistent connections from an application to reuse database sessions from a previous PHP script, giving better scalability. When an application uses a database pooled process previously used with a different connection class, the session settings such as the default Oracle date format are reset. This prevents accidental sharing of information between different applications.
The value can be set at runtime with ini_set() prior to connecting.
To use DRCP, OCI8 must be linked with Oracle 11g libraries
and the database must be Oracle 11g. The connection pool
must be enabled in the database,
the oci8.connection_class
should be set to
the same string for all web servers running the same
application, and the OCI8 connection string must specify to
use a pooled server.
oci8.default_prefetch
int
This option sets the default number of extra rows that will
be fetched and cached automatically whenever a low-level
request for data from the database is made. Setting a value
of 0
turns off prefetching.
The prefetch value does not alter the number of rows that functions like oci_fetch_array() return to the user; the prefetching and caching of rows is handled internally in OCI8.
The value can be set per-statement with oci_set_prefetch() prior to statement execution.
In PHP 5.3 (PECL OCI8 1.3.4) the default value was increased
from 10
to 100
.
In PHP 5.3.2 (PECL OCI8 1.4) the minimum value settable was
reduced from 1
to 0
,
allowing prefetching to be turned off.
When using Oracle Database 12c or later, the prefetch
value set by PHP can be overridden by Oracle's
client oraaccess.xml
configuration file. Refer
to Oracle documentation for more detail.
Hinweis: A larger prefetch can result in improved performance, at the cost of some increased memory usage. For queries that return large amounts of data, the performance benefit can be significant.
oci8.events
boolean
Using On
allows PHP to be notified of
database Fast Application Notification (FAN) events.
Without FAN, when a database instance or machine node fails unexpectedly, PHP applications may be blocked waiting for a database response until a TCP timeout expires. With FAN events, PHP applications are quickly notified of failures that affect their established database connections. The OCI8 extension will clean up unusable connections in the persistent connection cache.
When using On
, the database must also be
configured to post FAN events.
FAN support is available when OCI8 is linked with Oracle 10gR2 (or later) libraries and connected to Oracle Database 10gR2 (or later).
oci8.max_persistent
int
Die maximale Anzahl persistenter OCI8-Verbindungen pro Prozess. Wenn diese Option auf -1 gesetzt ist, ist die Anzahl der Verbindungen nicht limitiert.
oci8.old_oci_close_semantics
boolean
Die Option kontrolliert das Verhalten der Funktion oci_close(). Wenn Sie sie aktivieren, 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 die 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, the expiry of idle resources is not alarm-based. It occurs when PHP finishes processing a script and checks the last-used timestamp of resources. Hence there is a paradox that idle connections can only be closed when there is some activity (though not necessarily OCI8 related) in the PHP process. If there is more than one PHP process then each must individually be activated in order to trigger expiry of its idle resources. The introduction of Database Resident Connection Pooling (DRCP) in Oracle 11g resolves the memory and resource issues that
oci8.max_persistent
andoci8.persistent_timeout
previously attempted to overcome.
Hinweis: In PHP 5.3 (PECL OCI8 1.3), persistent connections can be closed with oci_close().
oci8.ping_interval
int
Die Dauer (in Sekunden), die vergehen muss, bevor ein Ping während eines oci_pconnect() abgeschickt wird. Ein Ping versichert 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 fehlerhafte Verbindungen nicht bemerkt, wie sie 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.privileged_connect
boolean
Diese Option aktiviert privilegierte Verbindungen unter Verwendung
externer Credentials (OCI_SYSOPER
,
OCI_SYSDBA
).
Hinweis: Seting this
On
can allow scripts on web servers running with the appropriate OS user privileges to connect as privileged database users without requiring a database password. This can be a security risk.
oci8.statement_cache_size
int
Diese Option aktiviert den Statement-Cache und definiert, wie viele Statements gecacht werden. Um das Caching zu deaktivieren, muss die Option auf 0 gesetzt werden.
Statement caching removes the need to transmit the statement text to the database and removes the need to transmit any meta data about the statement back to PHP. This can significantly improve overall system performance in applications which reuse statements during the lifetime of a connection. Some extra database "cursors" may be held open under the assumption that statements will be reused.
Set this value to the size of the working set of statements used by your application. Setting too small a value can cause statements to be flushed from the cache before they are reused.
This option is of most use with persistent connections.
When using Oracle Database 12c, this
value can be overridden and automatically tuned by Oracle's
client oraaccess.xml
file. Refer to
Oracle documentation for more detail.