我一直从我的代码中得到以下错误:
数据库连接失败:PDO :: __ construct():发送12个字节失败,errno = 110连接超时
这个错误持续发生在api上.如果那个api在白天不停地被调用,那么这种情况就不会发生.只有当api不使用一段时间.
我可以通过执行php-fpm restart/reload来解决这个问题,但这不应该是解决方案.
有谁知道如何解决这个问题?
- 编辑 -
这是连接数据库的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
为了更多地进行迭代,目前在两个API上使用它.
使用持久连接并不是那么好(看看为什么),但是为了解决这个问题,您可能需要增加 MySQL 连接超时。
要实现此目的,请参阅my.ini 的wait_timeout参数。
ps 另外,您可以捕获此错误并重新连接到数据库。
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |