Codeigniter アプリで A3M を使用しています。これが行うことの 1 つは、ログインしているユーザーの権限に応じて、メイン ナビゲーション メニューに表示される項目を決定することです。
これは問題なく動作しますが、メニューを生成するために必要なデータベース呼び出しの数について少し心配しています。特に、すべてのページで発生するためです。
これを回避する方法について誰か考えがありますか? おそらくある種のキャッシング。
ありがとう
Codeigniter アプリで A3M を使用しています。これが行うことの 1 つは、ログインしているユーザーの権限に応じて、メイン ナビゲーション メニューに表示される項目を決定することです。
これは問題なく動作しますが、メニューを生成するために必要なデータベース呼び出しの数について少し心配しています。特に、すべてのページで発生するためです。
これを回避する方法について誰か考えがありますか? おそらくある種のキャッシング。
ありがとう
非常に単純であることが判明したので、他の誰かが役に立つと思った場合に備えて、ここにソリューションを投稿しています。
大規模な詳細には触れずに (誰かが尋ねない限り)、最善のアプローチは、データベース クエリを作成して、現在のすべてのユーザーのアクセス許可の配列を抽出することのようです。a3m_account
、a3m_rel_account_role
、a3m_rel_role_permission
およびa3m_acl_permission
テーブルを結合することで、これは非常に簡単です。
結果が得られたら、各 key_name を$permissions
. その後、次を実行して権限を確認できますin_array('permission_to_check',$permissions)
これにより、1 回のデータベース呼び出しで多数の権限チェックを実行できます。これにより、アプリケーションが劇的に高速化されました。ログイン時にセッション データに配列を追加することもでき$permissions
ます。そのため、セッション中の権限チェックでデータベース呼び出しは必要ありません (ただし、変更はすぐには反映されません)。