PHP 多进程下使用 PDO 丢失连接的问题

在PHP CLI的多进程环境中,使用PDO连接MySQL时可能会遇到连接丢失的问题。当父进程创建的PDO对象在子进程中使用,会出现PHP警告,导致无法执行MySQL操作。这是因为子进程在父进程的PDO连接关闭后尝试使用该连接,MySQL会报告错误。官方文档指出,程序不应尝试使用已关闭的链接。因此,避免在多进程场景下复用父进程的数据库连接资源。
摘要由CSDN通过智能技术生成

PHP 多进程加 PDO 丢失连接

PHP 的 pcntl 扩展实现了 PHP cli 模式下的多进程,但如果父进程创建或使用的对象,如果被子进程拿到可能会造成一些误导和错误

PDO

在使用 PDO 对 Mysql 进行操作的时候,如果在父进程实例化的 pdo 对象,在子类中继续使用,那么可能会造成 PHP warning 的警告,导致无法使用 pdo 对象对 mysql 进行操作,下面的代码可以复现这个场景:

环境

  1. Mysql 5.7.27
  2. 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++) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值