PHP 多进程加 PDO 丢失连接
PHP 的 pcntl
扩展实现了 PHP cli 模式下的多进程,但如果父进程创建或使用的对象,如果被子进程拿到可能会造成一些误导和错误
PDO
在使用 PDO 对 Mysql 进行操作的时候,如果在父进程实例化的 pdo 对象,在子类中继续使用,那么可能会造成 PHP warning 的警告,导致无法使用 pdo 对象对 mysql 进行操作,下面的代码可以复现这个场景:
环境
- Mysql 5.7.27
- PHP 7.3.9
<?php
$fork = 3;
$pdo = new PDO('mysql:host=127.0.0.1:3306;dbname=test', 'root', '******');
$childList = [];
for ($i = 0; $i < $fork; $i++)