php - mysql 服务器在 PDO 中消失了

标签 php mysql pdo ping reconnect

我正在运行我的 php 脚本并遇到间歇性问题:

PHP fatal error :未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:2013 在查询期间丢失与 MySQL 服务器的连接”

如果出现这样的错误,是否可以在PDO中ping mysql?

我只是想让您注意到我的 PDO 连接不是持久的。我正在循环连接 PDO。我想每次都会循环打开一个新连接。如果是这样,那么为什么 mysql 失去连接呢?或者,如果 PDO 连接已经存在,那么它可能会提供现有的 pdo 对象。但如果发生这样的错误,它应该尝试重新连接并给出新的连接而不是错误。

有什么可能的解决方案来避免该错误?

最佳答案

就我而言,PDO 采用单个连接,如果循环大小很大,连接就会超时。因此,我增加了所有 cli 的 PDO 连接超时。

$this->connection = new PDO($this->dsn, $this->username, $this->password);
//Increase the session time out for all cli's
if(php_sapi_name() == 'cli'){
      $query = $this->connection->prepare("set session wait_timeout=10000,interactive_timeout=10000,net_read_timeout=10000");
      $query->execute();
}

问题现已解决。

关于php - mysql 服务器在 PDO 中消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12003857/

相关文章:

php - 在 wordpress 中执行 sql 查询

php -  编码问题

mysql - SQL 查询连接同一列两次

mysql - 如何将 1 个表连接到产品和类别应用程序树中(2 个不同的表作为一个表)?

PHP PDO 包装类实现

php - 实现类似 Google+ 圈子的功能

java - 哪种技术适合构建可扩展的网站?

javascript - Jquery 切换输入值和按钮类

php - pdo 使用 mysql 不显示任何内容

php - Windows 上 php pdo 的 sqlite 正确路径/URI