array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.oci-set-client-identifier.php', 1 => 'oci_set_client_identifier', ), 'up' => array ( 0 => 'ref.oci8.php', 1 => 'OCI8 Функции', ), 'prev' => array ( 0 => 'function.oci-set-call-timout.php', 1 => 'oci_set_call_timeout', ), 'next' => array ( 0 => 'function.oci-set-client-info.php', 1 => 'oci_set_client_info', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/oci8/functions/oci-set-client-identifier.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)
oci_set_client_identifier — Задаёт идентификатор клиента
Устанавливает идентификатор клиента, используемый различными компонентами базы данных для идентификации различных пользователей тонких клиентов, которые авторизуются в базе данных как один пользователь.
Идентификатор клиента регистрируется в базе данных во время очередного запроса от PHP, например, когда запускается SQL выражение.
Идентификатор может быть извлечён, например с помощью
SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER')
FROM DUAL
. Административное представление базы данных, такое как
V$SESSION
, также содержит это значение. Его можно использовать совместно
с DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE
для трассировки и аудита.
Значение может сохраняться между запросами страниц, которые используют одно и то же постоянное соединение.
connection
Идентификатор соединения Oracle, который возвращают функции oci_connect(), oci_pconnect() или oci_new_connect().
client_id
Задаваемая пользователем строка до 64 байт.
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Установка идентификатора клиента для пользователя
<?php
// Найдём логин пользователя
session_start();
$un = my_validate_session($_SESSION['username']);
$c = oci_connect('myschema', 'welcome', 'localhost/XE');
// Сообщим его базе данных
oci_set_client_identifier($c, $un);
// Следующий запрос к БД заодно установит идентификатор
$s = oci_parse($c, 'select mydata from mytable');
oci_execute($s);
// ...
?>
Ряд OCI8-функции вызывают полное сканирование таблицы (roundtrip). Функции не сканируют таблицы полностью для тех запросов, в которых включено кеширование результатов в базе данных.