Db に接続し、ページを提供する前に権限をチェックする CI インスタンスがあります。現在のユーザーがページにアクセスできない場合は、ログイン ページにリダイレクトされます。
ログイン ページには、明らかに、すべてのユーザーがアクセスできるようにアクセス許可が設定されています。
最近の不具合の後、データベース サーバーは別の IP アドレスで復旧しました (Amazon、EC2 に感謝します)。これにより、CI はログインを含むどのページの権限もチェックできなくなりました。このコードは、Yes 以外は No であると想定しているため、Login にリダイレクトされます。その結果、無限のリダイレクト ループが発生しました。
この正確な問題が再び発生することはありませんが (静的エラスティック IP)、Db 接続がいつダウンしたかを検出し、適切に処理したいと考えています。
私が達成しようとしているThis SO Questionを見てきましたが、どのコントローラーにもデータベースを明示的にロードしていません。それは autoload 構成ファイルにあります。
そう、
CI 内から Db 接続の状態を照会するにはどうすればよいですか? 役に立たないクエリを実行して、結果が返されるかどうかを確認する必要がありますか、それともより洗練された解決策がありますか?
編集:チェックは現在フックで実行されています:
$hook['post_controller_constructor'] = array(
'class' => 'AuthHook',
'function' => 'ValidateCredentials',
'filename' => 'auth.php',
'filepath' => 'hooks'
);