gpt4 book ai didi

php - 检测 CodeIgniter 何时无法连接到 Db

转载 作者:可可西里 更新时间:2023-11-01 13:50:56 25 4
gpt4 key购买 nike

我有一个 CI 实例,它连接到 Db 并在提供页面之前检查权限。如果当前用户无法访问该页面,它将重定向到登录页面。

显然,登录页面设置了权限,以便所有用户都可以访问。

在最近的一次故障之后,数据库服务器恢复到不同的 IP 地址(感谢 Amazon、EC2)。这导致 CI​​ 无法检查任何页面的权限 - 包括登录。由于代码假设除了"is"之外的任何内容都是“否”,因此它重定向到“登录”。结果是一个无限的重定向循环。

虽然这个确切的问题不应该再次发生(静态弹性 IP),但我想检测 Db 连接何时断开并适本地处理它。

我看过 This SO Question这是我想要实现的目标,但我没有在任何 Controller 中显式加载数据库,它在自动加载配置文件中。

所以,

如何从 CI 内部查询 Db 连接的状态?我是否必须运行一个无用的查询并检查我是否得到返回结果或者是否有更优雅的解决方案?

编辑:当前正在 Hook 中执行检查:

$hook['post_controller_constructor'] = array(
'class' => 'AuthHook',
'function' => 'ValidateCredentials',
'filename' => 'auth.php',
'filepath' => 'hooks'
);

最佳答案

您可以扩展 Controller 并在其构造函数中加载数据库:

    class My_Controller extends CI_Controller {
public function __construct(){
parent::__construct();
if ( $this->load->database() === FALSE )
{
//do something
}
}
}

您所有的 Controller 都将继承新 Controller 。

关于php - 检测 CodeIgniter 何时无法连接到 Db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706504/

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