首页 > 解决方案 > PHP/PDO 中的 MySQL 连接处理问题

问题描述

我已将我的 PHP 应用程序迁移到无服务器模型,其中云提供商限制了容器实例和 MySQL 服务器之间的活动连接数量。有时在一周内,每个容器实例超过 100 个活动连接到 MySQL 的限制。PHP 中使用的 SQL 客户端库是 Medoo,它是 PDO 的抽象,我们使用 PHP 7.3 和 Slim Framework 3。

检查 SHOW PROCESSLIST 时;从 MySQL 服务器中,可以看到几个已经旧的连接并且处于睡眠状态,为什么它们没有关闭?根据 PDO 文档,PHP 在完成脚本时关闭 MySQL 连接,在这种“结束脚本”条件下是否有任何异常?剧本什么时候结束?是否有一些 Apache 或 PHP 配置可以避免这种情况并导致问题?

在将您(读者)与问题联系起来之后。我的问题是:什么可能导致这种情况?PHP 或 Apache 中是否有任何可能与该问题相关的配置?代码中应该注意什么?你会尝试什么?

不,我们没有设置持久连接。

标签: phpmysqlapachegoogle-cloud-runslim-3

解决方案


不幸的是, PDO没有任何功能来配置连接限制。

为了处理数据库连接,GCP 在其官方文档中提供了一些管理它的良好实践。

总之,我建议尝试以下方法:


推荐阅读