Подключается к серверу MySQL

# getSession

(No version information available, might only be in Git)

getSession — Подключается к серверу MySQL

### Описание

function mysql_xdevapi\getSession(string `$uri`): mysql_xdevapi\Session

Подключается к серверу 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"
    }

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open