2009-08-21 13 views
0

私は以下の配列をPHPで使用しています。私は自分のサイトのモデレータ/管理者を追跡するためにuser_id番号を格納しています。次に、in_array()を使用してユーザーにモデレータ権限が必要かどうかを判断できるページこれは、代わりに配列を使用していくつかのmysqlクエリを保存することを示しています。複数のphp配列を組み合わせるべきかどうか?

私は、別々のものではなく、1つの大きな配列にこれらを組み合わせることで、どんなパフォーマンスが得られるだろうと思いますか?

もし私がそれらを組み合わせて使用​​する方法を示すことができますか?

多分1つの方法のためにいくつかの理由を別のリストですか?

$moderators = array(1,99,88,77,2,3,4,5); 
$bulletin_moderators = array(1,1091,13,103); 
$forum_moderators = array(1,1091,34850,13,103,21); 
$blog_moderators = array(1,1091,21); 
$photo_moderators = array(1,1091,13,34850,103,21); 
$chat_moderators = array(1,44534); 
+1

ハードコーディングに関するsageのアドバイスを聞く。私たちを信じて、あなたは本当にこれをDBに保存したいと思っています。長期的にはあなたの人生を楽にするでしょう。私たちの多くは似たようなことをしており、私たちをお尻に噛ませていたことを思い出してください。私たちはそんなことはしませんでした。あなたは警告されています。あなたのアプリに幸運! :) –

答えて

3

パフォーマンスの向上?いいえ。絶対に。これを試してください:

$roles=array(
    'moderators'   => array(1,99,88,77,2,3,4,5), 
    'bulletin_moderators' => array(1,1091,13,103), 
    'forum_moderators' => array(1,1091,34850,13,103,21), 
    'blog_moderators'  => array(1,1091,21), 
    'photo_moderators' => array(1,1091,13,34850,103,21), 
    'chat_moderators'  => array(1,44534) 
); 

上記のように、これらは実際にハードコードされるべきではありません。 DBクエリは時間がかかりません。おそらくメモリやデータベース自体にキャッシュされます(mysqlを使用していると仮定します)。

ユーザーを追加するとどうなりますか?ソースを編集する必要があります。複数のサーバーがある場合はどうなりますか? X個のサーバーでソースを編集する必要があります。

+0

それは私が探していたものです、ありがとう! – JasonDavis

6

これは既にかなり極端な最適化だと思います。このための明確な必要性を示すベンチマークがない限り、db-sideの役割を保存してクエリを実行するだけの理由はありません。それはわずか1秒しかかかりません。

+0

ええ、既にデータベースに対してユーザーを認証している場合は、ユーザーロールをそこに格納しておけば、同時に取得することができます –

+0

これらは高速クエリでなければならないだけでなく、このように、モデレータを追加/削除するための管理ツールを簡単に書くことが不可能になり、このようなパターンになると、あなたのコード全体に魔法の数字がつくことになります。これはメンテナンスの悪夢です。 これは時期尚早な最適化ではないですか? –

+0

ありがとうございますが、これは私の状況で本当に役立つわけではありません。 – JasonDavis

0

確かにパフォーマンスは向上しませんが、あまりにも誇張してはいけません。このようなものは、ページ全体のパフォーマンスにはあまり影響しません。

個人的には、これらの配列をすべて管理する代わりに、すべてのユーザーのアクセス許可を保持するUserクラスを作成します。そのクラスの関数を調べてください。通常、ユーザーに関するユーザー名やその他の情報も必要になります.Userオブジェクトは、すべてを統合するうえで便利です。

ページロードの開始時にユーザーについて知っておく必要があるすべてをロードし、必要に応じてセッションでキャッシュします。

+0

この主な理由は、ユーザーに権限を正確に表示するのではなく、他のユーザーに他の権限があることを示すことです。これはDBへの1つの余分なクエリを減らすのに最適な方法です – JasonDavis

関連する問題