(无版本信息可用,可能只在 Git 中)
getSession — 连接到 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' 值:plain
、mysql41
、external
和 sha256_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" }