我有一个 CI 实例,它连接到 Db 并在提供页面之前检查权限。如果当前用户无法访问该页面,它将重定向到登录页面。
显然,登录页面设置了权限,以便所有用户都可以访问它。
在最近的一次故障之后,数据库服务器恢复了一个不同的 IP 地址(感谢 Amazon,EC2)。这导致 CI 无法检查任何页面的权限 - 包括登录。由于代码假定除 Yes 之外的任何内容都是 No,因此它重定向到 Login。结果是无限重定向循环。
虽然这个确切的问题不应该再次发生(静态弹性 IP),但我想检测 Db 连接何时关闭并适当处理。
我已经看到了这个 SO Question,这是我想要实现的,但我没有在任何控制器中明确加载数据库,它在自动加载配置文件中。
所以,
如何从 CI 内部查询 Db 连接的状态?我是否必须运行一个无用的查询并检查我是否得到结果,或者是否有更优雅的解决方案?
编辑:检查当前正在钩子中执行:
$hook['post_controller_constructor'] = array(
'class' => 'AuthHook',
'function' => 'ValidateCredentials',
'filename' => 'auth.php',
'filepath' => 'hooks'
);