Php/docs/function.oci-pconnect
oci_pconnect
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_pconnect — Connect to an Oracle database using a persistent connection
Description
oci_pconnect
( string $username
, string $password
[, string $connection_string
[, string $character_set
[, int $session_mode
]]] ) : resource
Creates a persistent connection to an Oracle server and logs on.
Persistent connections are cached and re-used between requests, resulting in reduced overhead on each page load; a typical PHP application will have a single persistent connection open against an Oracle server per Apache child process (or PHP FPM process). See the OCI8 Connection Handling and Connection Pooling section for more information.
Parameters
usernameThe Oracle user name.
passwordThe password for
username.connection_stringContains the
Oracle instanceto connect to. It can be an [https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-E5358DEA-D619-4B7B-A799-3D2F802500F1 » Easy Connect string], or a Connect Name from thetnsnames.orafile, or the name of a local Oracle instance.If not specified, PHP uses environment variables such as
TWO_TASK(on Linux) orLOCAL(on Windows) andORACLE_SIDto determine theOracle instanceto connect to.To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Futher options were introduced with Oracle 19c, including timeout and keep-alive settings. Refer to Oracle documentation. Service names can be found by running the Oracle utility
lsnrctl statuson the database server machine.The
tnsnames.orafile can be in the Oracle Net search path, which includes/your/path/to/instantclient/network/admin,$ORACLE_HOME/network/adminand/etc. Alternatively setTNS_ADMINso that$TNS_ADMIN/tnsnames.orais read. Make sure the web daemon has read access to the file.character_setDetermines the character set used by the Oracle Client libraries. The character set does not need to match the character set used by the database. If it doesn't match, Oracle will do its best to convert data to and from the database character set. Depending on the character sets this may not give usable results. Conversion also adds some time overhead.
If not specified, the Oracle Client libraries determine a character set from the
NLS_LANGenvironment variable.Passing this parameter can reduce the time taken to connect.
session_modeThis parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the following values:
OCI_DEFAULT,OCI_SYSOPERandOCI_SYSDBA. If eitherOCI_SYSOPERorOCI_SYSDBAwere specified, this function will try to establish privileged connection using external credentials. Privileged connections are disabled by default. To enable them you need to set oci8.privileged_connect toOn.PHP 5.3 (PECL OCI8 1.3.4) introduced the
OCI_CRED_EXTmode value. This tells Oracle to use External or OS authentication, which must be configured in the database. TheOCI_CRED_EXTflag can only be used with username of "/" and a empty password. oci8.privileged_connect may beOnorOff.OCI_CRED_EXTmay be combined with theOCI_SYSOPERorOCI_SYSDBAmodes.OCI_CRED_EXTis not supported on Windows for security reasons.
Return Values
Returns a connection identifier or FALSE on error.
Examples
Example #1 Basic oci_pconnect() Example using Easy Connect syntax
<?php// Connects to the XE service (i.e. database) on the "localhost" machine$conn = oci_pconnect('hr', 'welcome', 'localhost/XE');if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);}$stid = oci_parse($conn, 'SELECT * FROM employees');oci_execute($stid);echo "<table border='1'>\n";while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n"; } echo "</tr>\n";}echo "</table>\n";?>
See oci_connect() for further examples of parameter usage.
Notes
Note:
Starting with PHP 5.1.2 and PECL OCI8 1.1, the lifetime and maximum number of persistent Oracle connections per PHP process can be tuned by setting the following configuration values: oci8.persistent_timeout, oci8.ping_interval and oci8.max_persistent.
See Also
- oci_connect() - Connect to an Oracle database
- oci_new_connect() - Connect to the Oracle server using a unique connection