(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_pconnect — Connect to an Oracle database using a persistent connection
$username
,$password
,$connection_string
= null
,$encoding
= "",$session_mode
= OCI_DEFAULT
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.
username
The Oracle user name.
password
The password for username
.
connection_string
Містить
примірник Oracle
для з'єднання. Це може бути або » Easy Connect string, або Connect
Name з файлу tnsnames.ora, або назва локального примірника
Oracle.
Якщо не вказано або null
, то PHP
використовує змінні оточення, як от TWO_TASK
(в Linux) або
LOCAL
(у Windows) та ORACLE_SID
, щоб
визначити примірник Oracle
для з'єднання.
Для використання методу називання Easy Connect, PHP має бути скомпоновано з
Oracle 10g або новішими клієнтськими бібліотеками. Easy
Connect string для Oracle 10g має форму
[//]назва_хосту[:порт][/назва_сервісу]. Починаючи з Oracle
11g, синтаксис наступний:
[//]назва_хосту[:порт][/назва_сервісу][:тип_сервера][/назва_примірника].
Додаткові можливості були запроваджені в Oracle 19c, як от налаштування
обмеженого у часі та постійного з'єднання. Докладніше про це у документації
Oracle. Назви служб можна побачити, запустивши утиліту Oracle
lsnrctl status
на машині сервера бази даних.
Файл tnsnames.ora може бути на шляху пошуку Oracle Net, що
містить /ваш/шлях/до/instantclient/network/admin,
$ORACLE_HOME/network/admin та /etc.
Як варіант, можна встановити TNS_ADMIN
, тоді буде прочитано
файл $TNS_ADMIN/tnsnames.ora. Вебсервер має мати право
на читання цього файлу.
encoding
Визначає набір символів, які використовують клієнтські бібліотеки Oracle. Кодування може не збігатися з тим, що використовує база даних. Якщо так, Oracle намагатиметься перекодувати дані. Залежно від кодування, це може не давати прийнятні результати. Перетворення також збільшуватиме час виконання.
Якщо не визначено, то клієнтські
бібліотеки Oracle оберуть кодування, яке вказано в змінній оточення
NLS_LANG
.
Визначення цього параметра може скоротити час з'єднання.
session_mode
Цей параметр доступний, починаючи з
PHP 5 (PECL OCI8 1.1) та має такі допустимі значення:
OCI_DEFAULT
, OCI_SYSOPER
і
OCI_SYSDBA
. Якщо вказано OCI_SYSOPER
або OCI_SYSDBA
, то ця функція намагатиметься встановити
привілейоване підключення за допомогою зовнішніх облікових даних. Привілейовані
з'єднання початково вимкнені. Для увімкнення необхідно директиві oci8.privileged_connect встановити
значення On
.
У PHP 5.3 (PECL OCI8 1.3.4) вводиться значення режиму
OCI_CRED_EXT
. Воно вказує Oracle використовувати зовнішню
автентифікацію або автентифікацію операційної системи, котра має бути
налаштована в базі даних. Прапорець OCI_CRED_EXT
дозволено
використовувати тільки з іменем користувача "/" та порожнім паролем.
oci8.privileged_connect може
бути On
або Off
.
OCI_CRED_EXT
можна поєднувати з режимами
OCI_SYSOPER
або
OCI_SYSDBA
.
OCI_CRED_EXT
не підтримується у Windows з міркувань
безпеки.
Returns a connection identifier or false
on error.
Приклад #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.
Зауваження: 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.