(PECL ibm_db2 >= 1.0.0)
db2_pconnect — Возвращает постоянное соединение с базой данных
$database
,$username
,$password
,$options
= []Возвращает постоянное соединение с базой данных IBM DB2 Universal Database, IBM Cloudscape или Apache Derby.
Для получения дополнительной информации о постоянных соединениях смотрите Постоянные соединения с базами данных.
Вызов db2_close() в постоянном соединении всегда возвращает true
, но базовое клиентское соединение DB2 остаётся открытым и ожидает обслуживания следующего соответствующего запроса db2_pconnect().
Пользователи, использующие ibm_db2 версии 1.9.0 или более поздней, должны знать, что модуль выполнит откат транзакции для постоянных соединений в конце запроса, тем самым завершив транзакцию. Это предотвращает перенос блока транзакции на следующий запрос, который использует это соединение, если выполнение скрипта завершается раньше, чем блок транзакции.
database
Псевдоним базы данных в клиентском каталоге DB2.
username
Имя пользователя, под которым производится подключение к базе данных.
password
Пароль, который используется при подключении к базе данных.
options
Ассоциативный массив параметров подключения, которые влияют на поведение подключения, где допустимыми ключами массива являются:
autocommit
Передача значения DB2_AUTOCOMMIT_ON
включает автоматическую фиксацию для этого дескриптора соединения.
Передача значения DB2_AUTOCOMMIT_OFF
выключает автоматическую фиксацию для этого дескриптора соединения.
DB2_ATTR_CASE
Передача значения DB2_CASE_NATURAL
указывает, что имена столбцов возвращаются в естественном регистре.
Передача значения DB2_CASE_LOWER
указывает, что имена столбцов возвращаются в нижнем регистре.
Передача значения DB2_CASE_UPPER
указывает, что имена столбцов возвращаются в верхнем регистре.
CURSOR
Передача значения DB2_FORWARD_ONLY
задаёт курсор только вперёд для ресурса оператора. Это тип курсора по умолчанию, который поддерживается на всех серверах баз данных.
Передача значения DB2_SCROLLABLE
задаёт прокручиваемый курсор для ресурса оператора. Этот режим включает произвольный доступ к строкам в наборе результатов, но в настоящее время поддерживается только IBM DB2 Universal Database.
Следующая новая опция доступна в ibm_db2 версии 1.7.0 и новее.
trustedcontext
Передача значения DB2_TRUSTED_CONTEXT_ENABLE включает доверенный контекст для этого дескриптора соединения. Параметр нельзя установить с помощью db2_set_option().
Ключ работает только в том случае, если база данных каталогизирована (даже если база данных является локальной) или если вы укажете полный DSN при создании соединения.
Чтобы каталогизировать базу данных, используйте следующие команды:
db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME> db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback db2 "update dbm cfg using svcename <SERVICENAME>" db2set DB2COMM=TCPIP
Следующие новые параметры i5/OS доступны в ibm_db2 версии 1.5.1 и новее.
Конфликтующие атрибуты соединения, используемые вместе с постоянными соединениями, могут привести к неопределённым результатам в i5/OS. Политики сайта должны быть установлены для всех приложений, использующих каждый профиль пользователя с постоянным подключением. При использовании постоянных соединений предлагается значение по умолчанию DB2_AUTOCOMMIT_ON.
i5_lib
Символьное значение, указывающее библиотеку по умолчанию, которая будет использоваться для разрешения неквалифицированных ссылок на файлы. Недопустимо, если соединение использует режим именования системы.
i5_naming
Значение DB2_I5_NAMING_ON
включает режим именования системы DB2 UDB CLI iSeries. Файлы квалифицируются с помощью разделителя косой черты (/). Неквалифицированные файлы разрешаются с использованием списка библиотек для задания.
Значение DB2_I5_NAMING_OFF
отключает режим именования по умолчанию CLI DB2 UDB, который является именованием SQL. Файлы квалифицируются с использованием разделителя точки (.). Неквалифицированные файлы разрешаются с использованием либо библиотеки по умолчанию, либо текущего идентификатора пользователя.
i5_commit
Атрибут i5_commit
должен быть установлен до вызова db2_pconnect(). Если значение изменяется после того, как соединение было установлено и соединение установлено с удалённым источником данных, изменение не вступит в силу до следующего успешного db2_pconnect() для дескриптора соединения.
Замечание:
Параметр php.ini
ibm_db2.i5_allow_commit
==0 илиDB2_I5_TXN_NO_COMMIT
является значением по умолчанию, но его можно изменить с помощью параметраi5_commit
.
DB2_I5_TXN_NO_COMMIT
— Контроль фиксации не используется.
DB2_I5_TXN_READ_UNCOMMITTED
— Грязное чтение, неповторимые reads, and phantoms are possible.
DB2_I5_TXN_READ_COMMITTED
— Грязное чтение невозможно. Возможны неповторяющееся чтение и фантомы.
DB2_I5_TXN_REPEATABLE_READ
— Грязное чтение и неповторяющиеся читки невозможны. Возможны фантомы.
DB2_I5_TXN_SERIALIZABLE
— Транзакции сериализуемы. Грязное чтение, неповторяющееся чтение и фантомы невозможны.
i5_query_optimize
DB2_FIRST_IO
Все запросы оптимизированы с целью максимально быстрого возврата первой страницы вывода. Эта цель хорошо работает, когда вывод контролируется пользователем, который, скорее всего, отменит запрос после просмотра первой страницы выходных данных. Запросы, закодированные с предложением OPTIMIZE FOR nnn ROWS, соответствуют цели, указанной в предложении.
DB2_ALL_IO
Все запросы оптимизированы с целью выполнить весь запрос о завершения в кратчайшие сроки. Это хороший вариант, когда выходные данные запроса записываются в файл или отчёт или когда интерфейс ставит выходные данные в очередь. Запросы, закодированные с предложением OPTIMIZE FOR nnn ROWS, соответствуют цели, указанной в предложении. Это значение по умолчанию.
i5_dbcs_alloc
DB2_I5_DBCS_ALLOC_ON
Значение включает схему распределения DB2 6X для увеличения размера столбца преобразования DBCS.
DB2_I5_DBCS_ALLOC_OFF
Значение выключает схему распределения DB2 6X для увеличения размера столбца преобразования DBCS.
Замечание:
Параметр php.ini
ibm_db2.i5_dbcs_alloc
==0 илиDB2_I5_DBCS_ALLOC_OFF
является значением по умолчанию, но его можно изменить с помощью параметраi5_dbcs_alloc
.
i5_date_fmt
DB2_I5_FMT_ISO
— Используется формат даты Международной организации по стандартизации (ISO) yyyy-mm-dd. Это значение по умолчанию.
DB2_I5_FMT_USA
— Используется формат даты США mm/dd/yyyy.
DB2_I5_FMT_EUR
— Используется европейский формат даты dd.mm.yyyy.
DB2_I5_FMT_JIS
— Используется японский формат даты yyyy-mm-dd.
DB2_I5_FMT_MDY
— Используется формат даты mm/dd/yyyy.
DB2_I5_FMT_DMY
— Используется формат даты dd/mm/yyyy.
DB2_I5_FMT_YMD
— Используется формат даты yy/mm/dd.
DB2_I5_FMT_JUL
— Используется юлианский формат даты yy/ddd.
DB2_I5_FMT_JOB
— Используется задание по умолчанию.
i5_date_sep
DB2_I5_SEP_SLASH
-В качестве разделителя даты используется косая черта (/). Это значение по умолчанию.
DB2_I5_SEP_DASH
— В качестве разделителя даты используется тире (-).
DB2_I5_SEP_PERIOD
— В качестве разделителя даты используется точка (.).
DB2_I5_SEP_COMMA
— В качестве разделителя даты используется запятая (,).
DB2_I5_SEP_BLANK
— В качестве разделителя даты используется пробел.
DB2_I5_SEP_JOB
— Используется задание по умолчанию.
i5_time_fmt
DB2_I5_FMT_ISO
— Используется формат времени Международной организации по стандартизации (ISO) hh.mm.ss. Это значение по умолчанию.
DB2_I5_FMT_USA
— Используется формат времени США hh:mmxx, где xx — это AM или PM.
DB2_I5_FMT_EUR
— Используется европейский формат времени hh.mm.ss.
DB2_I5_FMT_JIS
— Используется японский промышленный стандартный формат времени hh:mm:ss.
DB2_I5_FMT_HMS
— Используется формат hh:mm:ss.
i5_time_sep
DB2_I5_SEP_COLON
— Двоеточие (:) используется как разделитель времени. Это значение по умолчанию.
DB2_I5_SEP_PERIOD
— Точка (.) используется как разделитель времени.
DB2_I5_SEP_COMMA
— Запятая (,) используется как разделитель времени.
DB2_I5_SEP_BLANK
— Пробел используется как разделитель времени.
DB2_I5_SEP_JOB
— Используется задание по умолчанию.
i5_decimal_sep
DB2_I5_SEP_PERIOD
— В качестве десятичного разделителя используется точка (.). Это значение по умолчанию.
DB2_I5_SEP_COMMA
— В качестве десятичного разделителя используется запятая (,).
DB2_I5_SEP_JOB
— Используется задание по умолчанию.
Следующая новая опция i5/OS доступна в ibm_db2 версии 1.8.0 и новее.
i5_libl
Символьное значение, указывающее список библиотек, который будет использоваться для разрешения неквалифицированных ссылок на файлы. Укажите элементы списка библиотек, разделённые пробелами 'i5_libl'=>"MYLIB YOURLIB ANYLIB".
Замечание:
i5_libl вызывает qsys2/qcmdexc ('cmd',cmdlen), который доступен только в i5/OS V5R4 и новее.
Возвращает ресурс дескриптора подключения, в случае успешной попытки подключения. db2_pconnect() пытается повторно использовать существующий ресурс подключения, который точно соответствует параметрам database
, username
и password
. Если попытка подключения не удалась, db2_pconnect() вернёт false
.
Версия | Описание |
---|---|
ibm_db2 1.9.0 | Активные транзакции в постоянном соединении будут откатываться в конце каждого запроса. |
ibm_db2 1.8.0 | Параметр i5_libl доступен для пользователей i5/OS. |
ibm_db2 1.7.0 | Доступен параметр trustedcontext . |
ibm_db2 1.5.1 | Параметры i5_lib , i5_naming , i5_commit , i5_query_optimize , i5_dbcs_alloc , i5_date_fmt , i5_date_sep , i5_time_fmt , i5_time_sep и i5_decimal_sep доступны для пользователей i5/OS. |
Пример #1 Пример использования db2_pconnect()
В следующем примере первый вызов db2_pconnect() возвращает новый ресурс постоянного соединения. Второй вызов db2_pconnect() возвращает ресурс постоянного соединения, который просто повторно использует первый ресурс постоянного соединения.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$pconn = db2_pconnect($database, $user, $password);
if ($pconn) {
echo "Постоянное соединение успешно установлено.";
}
else {
echo "Постоянное соединение завершилось ошибкой.";
}
$pconn2 = db2_pconnect($database, $user, $password);
if ($pconn) {
echo "Второе постоянное соединение успешно установлено.";
}
else {
echo "Второе постоянное соединение завершилось ошибкой";
}
?>
Результат выполнения приведённого примера:
Постоянное соединение успешно установлено. Второе постоянное соединение успешно установлено.
Пример #2 Использование доверенного контекста
В следующем примере показано, как включить доверенный контекст, переключить пользователей и получить текущий идентификатор пользователя.
<?php
$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";
$tc_user = "tcuser";
$tc_pass = "tcpassword";
$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);
$tc_conn = db2_pconnect($dsn, "", "", $options);
if($tc_conn) {
echo "Явное доверенное соединение успешно установлено.\n";
if(db2_get_option($tc_conn, "trustedcontext")) {
$userBefore = db2_get_option($tc_conn, "trusted_user");
// Поработайте как пользователь 1.
Результат выполнения приведённого примера:
Явное доверенное соединение успешно установлено Пользователь был переключён.