在 CodeIgniter 3 中设置数据库连接超时

Posted

技术标签:

【中文标题】在 CodeIgniter 3 中设置数据库连接超时【英文标题】:Set database connection timeout in CodeIgniter 3 【发布时间】:2015-12-13 12:05:59 【问题描述】:

我们正在使用 2 个数据库,我们的本地数据库和一个外部数据库。但是现在我们的外部数据库已关闭(我们仍在开发中,所以我们遇到了这个问题很好),它现在尝试连接到外部数据库 30 秒,我怎样才能将数据库的连接超时更改为类似1 - 2 秒?我在我的数据库中使用 Codeigniter 和 PDO 驱动程序。有没有人为这个问题提供干净的解决方案?

【问题讨论】:

试试这个php.net/manual/en/… 我没有使用mysql @Scorpion 你试过设置PDO::ATTR_TIMEOUT吗?你的数据库是什么? 这是解决问题的一种方法,但我不知道您是否使用了 codeigniter,它可以让您在多个驱动程序(mysql、mysqli 和 PDO)之间进行选择。我想知道是否可以在不编辑核心的情况下解决此问题(这将是 PDO 驱动程序,因为我正在使用 PDO 与 Mysql 数据库通信)@user3584460 【参考方案1】:

这不是文档中的功能,但您可以通过添加 options 设置从数据库配置文件 (application/config/database.php) 中执行此操作,例如:

$db['default']['options'] = array(PDO::ATTR_TIMEOUT => 5);

其他使用相同内部机制的设置(例如PDO::MYSQL_ATTR_INIT_COMMAND 设置为$db['default']['stricton']PDO::MYSQL_ATTR_COMPRESS 设置为$db['default']['compress'])不受此影响。

如果您想更深入地挖掘或检查设置了哪些选项,您可以在db_connect 函数中登录$this->options system/database/drivers/pdo/pdo_driver.php 并检查database/drivers/pdo/subdrivers/pdo_mysql_driver.php

【讨论】:

正是我想要的,工作就像一个魅力!非常感谢!!我还不能给你赏金,但我会这样做的。

以上是关于在 CodeIgniter 3 中设置数据库连接超时的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter中设置持久登录?

CodeIgniter(3.1.4)框架中设置多级目录

在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata

在codeigniter中的数据库中设置值时如何将复选框显示为选中状态

在 Codeigniter 中设置表单的“名称”属性

在 Codeigniter 中设置跨域