getSession

(无版本信息可用,可能只在 Git 中)

getSession连接到 MySQL 服务器

描述

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

连接到 MySQL 服务器。

参数

uri

MySQL 服务器的 URI,例如 mysqlx://user:password@host

URI 格式

scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...

  • scheme: 必需,连接协议

    在 mysql_xdevapi 中,它始终是 'mysqlx'(用于 X 协议)

  • user: 可选,用于身份验证的 MySQL 用户帐户

  • password: 可选,用于身份验证的 MySQL 用户密码

  • target: 必需,连接所指的服务器实例

    * TCP 连接(主机名、IPv4 地址或 IPv6 地址)

    * Unix 套接字路径(本地文件路径)

    * Windows 命名管道(本地文件路径)

  • port: 可选,MySQL 服务器的网络端口。

    默认情况下,X 协议的端口为 33060

  • ?attribute=value: 此元素是可选的,它指定一个数据字典,其中包含不同的选项,包括

    • 与加密连接相关的 auth(身份验证机制)属性。有关更多信息,请参见 » 加密连接的命令选项。支持以下 'auth' 值:plainmysql41externalsha256_mem

    • connect-timeout 属性影响连接,而不是后续操作。它是在单个或多个主机上为每个连接设置的。

      传入一个正整数以定义连接超时时间(以秒为单位),或者传入 0(零)以禁用超时(无限)。未定义 connect-timeout 将使用默认值 10。

      相关的是,可以设置并使用 MYSQLX_CONNECTION_TIMEOUT(超时时间,以秒为单位)和 MYSQLX_TEST_CONNECTION_TIMEOUT(在运行测试时使用)环境变量,而不是 URI 中的 connect-timeout。connect-timeout URI 选项优先于这些环境变量。

    • 可选的 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 可用时使用 lz4,否则使用 zstd_stream。如果两者都不可用,则行为取决于 compression 值,例如,如果 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"
}
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top