标签归档:PHP

PHP 与 MySQL 的持久连接

PDO 初始化时支持持久连接,通过下面的方式:

$pdo = new PDO('mysql:192.168.10.10;database=crashcourse;charset=utf8', 'homestead', 'secret', [
    PDO::ATTR_PERSISTENT => true
]);

第四个参数 PDO::ATTR_PERSISTENT => true 表示创建一个持久连接。

创建的持久连接的生命周期与 PHP-FPM 的生命周期挂钩,PHP-FPM 进程被杀,持久连接失效。当然,能够创建的持久连接的线程数量,也与 PHP-FPM 的数量相同。

下面是自测时的示例:

$pdo = new PDO('mysql:192.168.10.10;database=crashcourse;charset=utf8', 'homestead', 'secret', [
    PDO::ATTR_PERSISTENT => true
]);
$statement = $pdo->query('select connection_id() as id');
var_dump($statement->fetch(PDO::FETCH_ASSOC));

第一次执行:

第二次执行:

第三次执行:

可以看出第三次执行得到的连接 id,就是第一次创建的 id,因为本机的 PHP-FPM 进程数启动了两个。