运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mysqlnd_ms 配置选项
名字 默认 可修改范围 更新日志
mysqlnd_ms.enable 0 PHP_INI_SYSTEM
mysqlnd_ms.force_config_usage 0 PHP_INI_SYSTEM
mysqlnd_ms.ini_file "" PHP_INI_SYSTEM
mysqlnd_ms.config_file "" PHP_INI_SYSTEM
mysqlnd_ms.collect_statistics 0 PHP_INI_SYSTEM
mysqlnd_ms.multi_master 0 PHP_INI_SYSTEM
mysqlnd_ms.disable_rw_split 0 PHP_INI_SYSTEM

这是配置指令的简短说明。

mysqlnd_ms.enable integer

是否启动插件,如果禁用插件将不会嵌入 mysqlnd 库中内部 PROXY 调用的 mysqlnd C API 接口。

mysqlnd_ms.force_config_usage integer

如果启用,插件会在每次尝试 MySQL 连接的时候通过配置文件检查服务器参数。如果存在问题, 连接将被阻塞。

这个参数对于运行中的系统没有什么用处,用于调试配置文件。配置文件的作用分为两个阶段。 首先是 PHP 开始接收 WEB 请求时执行,这时插件会读取并且解析配置文件,在这个较早的阶段 中错误信息可能被陷入循环而不会展现给用户。因此缓存这些错误,并且在 MySQL 连接建立的 时候展现给用户。默认情况下,启动时被缓存的错误会产生一个 E_WARNING 级别的错误。如果设定了 force_config_usage 参数,错误类型会变为 E_RECOVERABLE_ERROR 级别。

可以参考 configuration file debugging notes 说明。

mysqlnd_ms.ini_file string

从 1.4.0 版本已经作废,被 mysqlnd_ms.config_file 替代, 指定插件配置文件。

mysqlnd_ms.config_file string

插件的配置文件名称,mysqlnd_ms.ini_file 从 1.4.0 版本作废。

mysqlnd_ms.collect_statistics integer

启动或者禁用统计信息手机,考虑到性能问题默认是禁用的。统计信息可以使用 mysqlnd_ms_get_stats() 获取。

mysqlnd_ms.multi_master integer

是否启动 MySQL multi master 集群,可以参考 supported clusters

mysqlnd_ms.disable_rw_split integer

启动还是禁用读写分离。

控制负载均衡和连接切换是否会基于读写分离。如果禁用读写分离,只有 master 列表 中的服务器会被用于执行语句,所有 slave 列表中的服务器会被忽略。

SQL hint 中 MYSQLND_MS_USE_SLAVE 不会被识别,语句还是会被 发送个 master 执行。

禁用读写分离会影响 mysqlnd_ms_query_is_select() 的返回值, 函数将不会再返回在 slave 运行的返回值。

Note: Multiple master servers

设置 mysqlnd_ms.multi_master=1 将允许插件使用多台 master 服务器,否则 master 列表中只能有一个服务器。

可以参考 supported clusters 中的说明