(No version information available, might only be in Git)
getSession — Подключается к серверу MySQL
uri
URI к серверу MySQL, такой как mysqlx://user:password@host
.
Формат URI:
scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...
scheme
: обязательный, протокол соединения
В mysql_xdevapi это всегда 'mysqlx' (для X Protocol)
user
: необязательный, учётная запись пользователя MySQL для аутентификации
password
: необязательный, пароль пользователя MySQL для аутентификации
target
: обязательный, экземпляр сервера, к которому относится соединение:
* TCP-соединение (имя хоста, адрес IPv4 или адрес IPv6)
* Путь к сокету Unix (локальный путь к файлу)
* Именованный канал Windows (локальный путь к файлу)
port
: необязательный, сетевой порт сервера MySQL.
по умолчанию порт для X Protocol равен 33060
?attribute=value
: этот элемент является необязательным и определяет словарь данных,
который содержит различные параметры, в том числе:
Атрибут auth
(механизм аутентификации), поскольку он относится к зашифрованным соединениям.
Для получения дополнительной информации смотрите » Параметры
команды для зашифрованных соединений.
Поддерживаются следующие значения: plain
,
mysql41
, external
, и sha256_mem
.
Атрибут connect-timeout
влияет на соединение,
а не на последующие операции. Он устанавливается для каждого соединения на
одном или нескольких хостах.
Введите положительное целое число, чтобы определить время ожидания соединения в секундах, или введите 0 (ноль), чтобы отключить время ожидания (бесконечно). Не определяя время ожидания подключения, вы используется значение по умолчанию 10.
Связанные, переменные среды MYSQLX_CONNECTION_TIMEOUT (время ожидания в секундах) и MYSQLX_TEST_CONNECTION_TIMEOUT (используемые во время выполнения тестов) могут быть установлены и использованы вместо connect-timeout соединения в URI. Параметр URI подключения к connect-timeout имеет приоритет над переменными среды.
Необязательный атрибут compression
принимает следующие значения:
preferred
(клиент договаривается с сервером, чтобы найти поддерживаемый алгоритм; соединение не сжато, если взаимно поддерживаемый алгоритм не найден),
required
(как "preferred", но соединение разрывается, если взаимно поддерживаемый алгоритм не найден), или
disabled
(соединение не сжато). По умолчанию используется preferred
.
Опция была добавлена в версии 8.0.20.
Необязательный атрибут compression-algorithms
определяет
желаемые алгоритмы сжатия (и их предпочтительный порядок использования):
zstd_stream
(псевдоним: zstd),
lz4_message
(псевдоним: lz4) или
deflate_stream
(псевдонимы: deflate или zlib).
По умолчанию используется порядок (в зависимости от доступности системы): lz4_message, zstd_stream, затем deflate_stream.
Например, при передаче compression-algorithms=[lz4, zstd_stream] используется lz4, если он доступен, в противном случае
используется zstd_stream. Если оба недоступны, поведение зависит от значения сжатия,
например, если compression=required, то произойдёт сбой с ошибкой.
Опция была добавлена в версии 8.0.22.
Пример #1 Примеры URI
mysqlx://foobar
mysqlx://root@localhost?socket=%2Ftmp%2Fmysqld.sock%2F
mysqlx://foo:bar@localhost:33060
mysqlx://foo:bar@localhost:33160?ssl-mode=disabled
mysqlx://foo:bar@localhost:33260?ssl-mode=required
mysqlx://foo:bar@localhost:33360?ssl-mode=required&auth=mysql41
mysqlx://foo:bar@(/path/to/socket)
mysqlx://foo:bar@(/path/to/socket)?auth=sha256_mem
mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]
mysqlx://foobar?ssl-ca=(/path/to/ca.pem)&ssl-crl=(/path/to/crl.pem)
mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]?ssl-mode=disabled
mysqlx://foo:bar@localhost:33160/?connect-timeout=0
mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required
mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required&compression-algorithms=[lz4,zstd_stream]
Для получения дополнительной информации смотрите MySQL Shell » Подключение с использованием строки URI.
Объект Session.
Ошибка соединения вызывает Exception.
Пример #2 Пример использования mysql_xdevapi\getSession()
<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Не удалось установить соединение: " . $e->getMessage());
}
$schemas = $session->getSchemas();
print_r($schemas);
$mysql_version = $session->getServerVersion();
print_r($mysql_version);
var_dump($collection->find("name = 'Alfred'")->execute()->fetchOne());
?>
Вывод приведённого примера будет похож на:
Array ( [0] => mysql_xdevapi\Schema Object ( [name] => helloworld ) [1] => mysql_xdevapi\Schema Object ( [name] => information_schema ) [2] => mysql_xdevapi\Schema Object ( [name] => mysql ) [3] => mysql_xdevapi\Schema Object ( [name] => performance_schema ) [4] => mysql_xdevapi\Schema Object ( [name] => sys ) ) 80012 array(4) { ["_id"]=> string(28) "00005ad66abf0001000400000003" ["age"]=> int(42) ["job"]=> string(7) "Butler" ["name"]=> string(4) "Alfred" }