2012-02-07 6 views
2

ログインページがあります。ユーザーは自分のアカウントにログインし、その詳細を取得することができます。しかし、私は混乱している、私はセッション変数にユーザーの詳細を格納する必要がありますか、私はセッション変数としてIDだけを渡す必要がありますし、次のページでIDを使用してクラスによって取得されたすべての詳細。PHPセッションとクラス

セッション変数としてIDだけを渡すと、すべてのページでクラスを呼び出す必要があります。私に正しいアイデアを教えてください、私はクラスを繰り返し呼びたくはありません、ページはより速く読み込まなければなりません。

ありがとうございます。

+1

いつでもオブジェクトをセッションとして保存できます。オブジェクトにはすべてのプロパティが含まれています。 – JonH

答えて

2

長い間、パフォーマンス上の問題はありません。いずれかの方法を選択することができます。

私の経験では、セッションにIDを格納し、ユーザークラスに必要なときにユーザーデータを取得する方が一般的です。セッションでシリアル化された形式でユーザデータを含むオブジェクトを格納する

も可能ですが、

  • セッションデータは、すべての要求にPHPスクリプトにロードされているので、それは、(大量のメモリを要することができます)

  • あなたは、ユーザーが自分の好みを変更、または何かが起こった場合にはどのような(新鮮されるデータに依存することはできません?)

+0

お時間をありがとう。問題は、ユーザーが5ページを訪問し、すべてのページでクラスを呼び出すことによってDBから情報を取得していると仮定し、一度に500人のユーザーがオンラインであるとします。ちょうどMySqlの負荷について考えてみてください。 私のサイトがより速くよりスムーズに動くようにしたいだけです。だから、どんなアイデア..? – kwaxy

0

私は、Yを考えますouはセッション変数にセッションIDのみを格納する必要があります。特定の種類の追加情報が後で必要となることは決してありませんし、シリアル化 - 直列化解除にもある程度の時間がかかります(特に、データベースにセッションを保存する場合)ので、セッションに関するユーザーに関する情報を保存すると、パフォーマンス上の利点は得られません。

私はいくつかの理由でユーザをチェックする必要があるので、私はいつも毎回のリクエストでDBからユーザデータを読み込みます:彼/彼女はロックされていますか、彼/彼女は無効になっていますか、彼/彼女が最後にここにいた時など。