PdoPersistent 组件

PdoPersistent 是 Pdo 的长连接版本,使用方法与 Pdo 完全一至,仅配置不同。

长连接比短连接可提升两倍左右的并发性能。

  • MixHttpd 中单个工作进程不管运行多少个 host,连接配置相同的 PdoPersistent 组件都共用一个连接。
  • 另外你不需要处理连接超时的问题,组件底层已经帮你处理了。
调用 运行环境 连接方式
mix\client\PdoPersistent \Mix::app()->rdb MixHttpd/CLI 长连接

组件配置

多了一个配置项目 persistentTime,该配置决定框架多长时间重新连接一次数据库,避免数据库连接超时被主动kill连接,该数值应该小于 MySQL 配置文件内的 interactive_timeoutwait_timeout 参数。

App配置文件中,该组件的默认配置如下:

// 数据库
'rdb'      => [
    // 类路径
    'class'                           => 'mix\client\PdoPersistent',
    // 数据源格式
    'dsn'                             => 'mysql:host=127.0.0.1;port=3306;charset=utf8;dbname=test',
    // 数据库用户名
    'username'                        => 'root',
    // 数据库密码
    'password'                        => '',
    // 设置PDO属性: http://php.net/manual/zh/pdo.setattribute.php
    'attribute'                       => [
        // 设置默认的提取模式: \PDO::FETCH_OBJ | \PDO::FETCH_ASSOC
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    ],
    // 连接持续时间(秒)
    'persistentTime'                    => 7200,
],