2011-02-07 7 views
0

私は、PHPコードネームとMySQLのソーシャルウェブサイトを持っています。私は、マルチサーバー環境を扱うためにデータベースにユーザーセッションを保存しています。現在、データベースは1つしかありません。ソーシャルウェブサイトのユーザーセッション - 論理質問

1)複数のデータベース(マルチサーバー)を処理するには、どのようにユーザーセッションを保存するのですか?私はデータベースが複数のデータベース環境で動作しないと仮定します。

2)ユーザーに与えられたセッションIDは、データベースからの自動インクリメントかアプリケーションロジックから生成されたものですか?私はそれがGUIDでなければならないと思いますか?

3)私はsession_idに加えて、login_datetime、logout_Datatime、web/mobileなどのすべてのセッション関連の詳細を記録するuser_sessionテーブルを持っています。このテーブルは2段階で記述する必要があります:Whenユーザーはログオフ時に再度ログインします。質問は、ユーザーが日付を書き込むためにシステムが従わなければならないロジックは何かをログオンするときです。このPK IDはデータベース主導型の自動インクリメント値であり、メインセッションIDの作成後に作成されるため、システムにどのようなuser_sessionにデータを書き込むかはわかります。ですから、最後にuser_sessionテーブルを照会してuser_Session IDを見つけて書き込む必要があります。

+0

デフォルトのPHPセッションメカニズムを使用したことがありますか? –

+0

データベース内のユーザセッションをマルチサーバ環境と関連付けるのは何ですか?なぜPHPセッションがあなたに合っていないのですか?とにかくマルチデータベース環境で何が問題になっていますか?ここではどんな特別な問題がありますか? –

+0

memcached for sessionsを使用すると、かなりうまく動作します。 – mfonda

答えて

0

あなたのご意見は、この問題を解決するための最良の方法についての手がかりを与えました。

まず、サイトはすぐに起動してもまだライブしていない場合、問題を解決する最善の方法は次のとおりです。この問題はまだ心配しないでください。一度に1つのデータベースで1つのサーバー上のすべてをホストしてください。あなたの考えは、どんなに鮮やかであっても、需要がより多くのハードウェアを必要とするほど多くの問題を解決する必要があります。

第2に、画像サーバーとビデオサーバーにユーザーのセッション情報が必要ない可能性があります。ユーザーがビデオ付きのWebページを要求しており、Webページを閲覧するのに十分なアクセス権を持っている場合は、それ以上の認証チェックを行わずにビデオを送信するだけです。この選択により、コンテンツ配信ネットワーク(私は個人的にはRackSpace Cloudfilesが好きで、Akamaiと提携しています)を使用して、独自のサーバーを使用するよりも大幅に改善されたユーザーエクスペリエンスを実現できます。

幸運を祈る!

+0

私はユーザーデータ用に1データベース、データウェアハウス用に2データベースがありますので、同じユーザーセッションにデータを出力するユーザー分析に使用されます。したがって、これらの両方のデータベースがセッションの作成時に同じユーザー・セッションを再確認できるようにする必要があります。これは、最後のアクティビティーの日時またはユーザー・ログオフが次のように書かれているためです。セッション終了日時。だから、私が見ている唯一の方法は正しいmemcacheですか? – Rohit

+0

同じデータベース内に、ユーザーデータ用のテーブルとユーザー分析用のテーブルがないのはなぜですか? – Summer

-1

共有ドライブにセッションファイルを保存して、両方のサーバにセッションが存在するようにすることができます(サーバの両方のバージョンのPHP.iniでセッションパスをこの場所に設定します)。

+0

2番目の項目とは何ですか?user_Sessionは、システムがどのようにそれを見つけますか?例:私は午前2時30分にログインし、アプリケーションは私にセッションID 456を与えます。私は午前3時にログオフして50回活動します。だから午前3時に、セッションIDのセッションログに自分のログオフ日付が書き込まれます。だからシステムは、私のセッションIDを知って、ログオフ日付を書くためにuser_sessionテーブルでそれを見つける必要がありますか? – Rohit

+0

session_id(http://php.net/manual/en/function.session-id.php)を使用して、PHPがセッションを参照するために使用する識別子を取得できます。 –

+0

@Rohitの人は、それを少しでも理解していないので、組み込みのセッションメカニズムを使用することを強くお勧めします。 (違反はない - それは事実である)。すべてのユーザー要求とともにセッションIDが送信されます。したがって、ユーザーがログオフスクリプトを呼び出すと、クライアントはセッションIDクッキーも送信します。実際には、単一サーバーの1つを正しく使用する方法を学ぶまで、マルチサーバー構成を夢見てはいけません。 –