5

参考までに、この質問に関連する最近私が尋ねたSOに関する質問を次に示します。 友情関係をモデル化する方法

その質問に対して、友人が投稿した場合にのみニュース フィード アイテムを表示する方法を見つけました。しかし、私が必要としているのは、複数のサイト機能で使用できるように、より動的な方法で友情を確認する方法についてのアドバイスです。

たとえば、コメント システムをインストールしたところ、ユーザーがニュース投稿にコメントを投稿できるようになりました。ただし、これは友人に限定されているわけではなく、そうすべきです (後で、投稿の作成者によってオプションにされる必要があります)。

データベースから直接データをSELECT取得し、現在のユーザーの友人による投稿のみを取得するためにサブクエリを使用していたため、友人のみによるニュース項目の投稿は少し異なりました。ただし、コメントの例では、コメント投稿フォームを表示したいのは相手が友達の場合だけです。データベースから実際に何かを取り出して、選択、並べ替え、表示するわけではありません。

このような問題がサイト全体で何度も発生することを知っています。友情を確認する最も簡単な方法は何ですか? データベースからすべての友人のユーザー ID をなんらかのセッション配列に取得し if(in_array($friends)) 、問題の人が現在ログインしているユーザーの友人であるかどうかを判断する必要があるときはいつでも実行できますか? 私の頭の上では、これでうまくいくように思えますが、最初にあなたの意見を聞かせてください.

上記にリンクした質問は、私の友情テーブルがどのように機能するかを説明しています。

4

1 に答える 1

0

実際、フレンド配列をセッションに保存するのは非常に悪い考えです。セッション変数の作成後に新しい友達を追加するとどうなりますか? セッションでは更新されません。

同じページで何度も友達のリストをチェックすることになるので、クエリを実行して、同じページで引き続き使用できるローカル配列に保存しないでください。

ページの実行が終了すると、配列は破棄されます。

したがって、基本的には、リストを 1 回だけクエリします。

推奨される実装は、上記のコメントの「pst」のアドバイスに従い、最初に関係を見つける必要があるたびにクエリを実行することです。これは実装が簡単なためです。後でクエリの速度が問題になり始めたら、そのメソッドの内部を変更して、最初に呼び出されたときに友人リストをローカル配列にキャッシュして速度を上げることができます。(メモリ使用量をプロセッサ使用量と交換します)。

于 2011-10-14T10:32:01.130 に答える