(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.
// Переход на доверенного пользователя.Switching to trusted user.
$parameters = array("trusted_user" => $tc_user,
"trusted_password" => $tcuser_pass);
$res = db2_set_option ($tc_conn, $parameters, 1);
$userAfter = db2_get_option($tc_conn, "trusted_user");
// Сделайте больше в качестве доверенного пользователя.
if($userBefore != $userAfter) {
echo "Пользователь был переключён." . "\n";
}
}
db2_close($tc_conn);
}
else {
echo "Явное доверенное соединение завершилось ошибкой.\n";
}
?>
Результат выполнения данного примера:
Явное доверенное соединение успешно установлено Пользователь был переключён.