CakeFest 2024: The Official CakePHP Conference

db2_pconnect

(PECL ibm_db2 >= 1.0.0)

db2_pconnectВозвращает постоянное соединение с базой данных

Описание

db2_pconnect(
    string $database,
    ?string $username,
    ?string $password,
    array $options = []
): resource|false

Возвращает постоянное соединение с базой данных 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";
}
?>

Результат выполнения приведённого примера:

Явное доверенное соединение успешно установлено
Пользователь был переключён.

Смотрите также

  • db2_connect() - Возвращает соединение с базой данных

add a note

User Contributed Notes 2 notes

up
1
satoruyoshida at php dot net
12 years ago
If You will create db2 connection on IBMi , QSQSRVR job will be created under QSYSWRK subsystem with specified user.
You can ensure it with using db2_pconnect() function.

For example, db2_pconnect('*LOCAL', 'TESTUSR', 'PASSWORD') will bring us QSQSRVR job with TESTUSR user.

If You omit the user, IHS default user is used in the job.
up
0
php at redlagoon dot net
6 years ago
The ibm_db2.ini file controls many properties related to to pconnect. For example, stale connection handling is configurable.
To Top