2012-02-07 6 views
4

私は新しいウェブサイトを作成しています。ロードバランサを使用して複数のマシンでサイトをホストする必要がある場合は、簡単に拡張できるようにしたいと考えています。PHPセッション変数に代わるものは何ですか?

ウェブサイトのユーザーを認証することができます。つまり、私はいくつかの状態情報を維持する必要があります。私の最初の反応はSession変数を使うことでしたが、私は1台のマシンに限定しようとしています。セッション変数を(DB、redis、memcachedで)外部に格納する方法があることは知っていますが、それは唯一のオプションですか?

セッション変数の代替手段は何ですか?どのようにFacebookや他の大きなウェブサイトがこれをやっている?

P.S.私は別のセッションハンドラ(DB、redisなど)を探しているわけではありません。セッション変数を完全に取り除く方法があるかどうかを知りたい。

+2

これは良い質問ですが、私が迷惑なアドバイスを提供している場合は、多くの場合、プロジェクトの初期段階ではスケーリングについて全く心配しない方がよいでしょう。あなたが変わったことをしない限り、私はセッションストレージがボトルネックになることはまずないと思います。 – Eli

+0

私はあなたのポイントエリを参照してください。しかし、私はセッション変数がボトルネックになるのではないかと心配していません...私はサービスがあまりにも多くの作業なしにスケールアウトすることを確認したいだけです。それはセッション変数のように見える方法です。私は2012年にこれを行うより良い方法があると思っていました... StackOverflowがそれをどうやって行うのか知りたいと思っています... – Martin

答えて

1

たとえば、Zend cacheまたはAPC cacheを使用してキャッシュを調べることができます。

+1

少なくとも、これらがどのようにできるかを説明するドキュメントにリンクすれば役に立ちますユーザーごとに状態情報を共有するために使用することができます。ビンゴ。 – Quentin

8

これまでに聞いたことがありますか?session_set_save_handler?これにより、デフォルトのPHPセッションハンドラ(tmpディレクトリにsess_xxxxxxxxxxxxファイルを書き込む)以外のメカニズムを使用することができます。

データベースを使用する独自のセッションハンドラを作成できます。これは時間のかかる作業です。そのため、当面はデフォルトのPHPセッションハンドラを使用し、準備ができたら透過的にデータベースに切り替えることができます。おそらく、6つのセッション処理関数のバージョンを実装してプラグインする以外のコードを書き直す必要はありません。

+0

。さらに質問に答えるために、これはFacebookが(memcached、IIRCを介して)行うことのようなものです。 – ceejayoz

+0

ありがとうceejayoz!それを文書化する記事はどこかありますか?私はFacebookがセッション変数を使用していることを知って驚いています... – Martin

+0

なぜあなたはそれを知って驚くでしょうか?これらは、ソーシャルネットワークが行うすべてのもの(ログインステータスなど)に必要です。 – ceejayoz

関連する問題