问题
- php执行时间超过了数据库设置的超时时间,报错:MySQL server has gone away
- 使用的pdo连接
解决
- 可以修改mysql超时时间,但目前无法确定多少时间合适,索性迂回一下
- 每次执行mysql语句时要获取PDO实例,此时检查是否可用,不可用就new一个新的连接
/** * 检查连接是否可用 * @param PDO $conn 数据库连接 * @return bool */ protected function checkPdo(PDO $conn): bool { try { $conn->getAttribute(PDO::ATTR_SERVER_INFO); } catch (PDOException $e) { if ($e->getCode() == 'HY000') { return false; } throw $e; } return true; }