gpt4 book ai didi

php - API中PDO连接超时,php-fpm重启解决

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:31 26 4
gpt4 key购买 nike

我的代码中不断出现以下错误:

Database connect failed: PDO::__construct(): send of 12 bytes failed with errno=110 Connection timed out

此错误持续发生在 api 上。如果该 api 在白天不断被调用,则不会发生这种情况。仅当 api 一段时间未使用时。

我可以通过重新启动/重新加载 php-fpm 来解决这个问题,但这不应该是解决方案。

有人知道如何解决这个问题吗?

--编辑--

这是连接数据库的代码:

public function connectDatabase($allow_persistent = true)
{
$this->db = null;

$this->readINI();

$pdo_attr = [
PDO::ATTR_PERSISTENT => $allow_persistent,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8;",
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true,
];

$this->db = new PDO("mysql:host=" . $this->db_data_dbhost . ";dbname=" . $this->db_data_dbname . ";charset=utf8", $this->db_data_username, $this->db_data_password, $pdo_attr);

$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

再多说几句,目前有两个 API 使用了它。

  • 一个一直被客户使用,从未遇到过这个问题
  • 第二种还没有被很多客户使用,因为它仍在开发中,只有少数客户用于测试目的。我们确实尝试将应用程序推送到应用程序商店,但它被这个问题击落了。此 API 最终会遇到上述错误,并且在不重新启动/重新加载 php-fpm 服务的情况下无法从此状态恢复。

最佳答案

使用持久连接不是那么好 (see why),但要解决这个问题,您可能需要增加 MySQL 连接超时。

为此,请参阅 wait_timeout my.ini 的参数。

附注此外,您可以捕获此错误并重新连接到数据库。

关于php - API中PDO连接超时,php-fpm重启解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com