ポータルサイトなんかは、いろんなサイトを次々と買収し融合しますね。
複数のWebサーバーで、セッション(ログイン情報)を持ちまわってますね。(ライブドアやyahoo全体がひとつのwebサーバーで動くなんてないですよね?)
Webサーバーが違えばセッション情報は持ちまわせないので、何か特別な方法を使っていると思います。
どういうやり方があるか、どうか助言お願いします。
http://www.hatena.ne.jp/1097307546
初歩的な質問だと思うのですが、PHPのセッション機能についての質問です。 「セッションの有効期限」というのは、具体的に何の有効期限なのでしょうか。 サーバに保存され.. - 人力検索はてな
普通のポータルサイト(はてなやライブドア)は普通に時間制なしのログインクッキーを食わせているような気がします。
ブラウザを閉じられると消されるので、セッションのような使い方(セッションもクッキーの一種ですが。)ができます。
(サーバが移動したときにクッキーの読み込みを行っている?)
それ以外で、サーバ側のセッション変数を異なるサーバ間でやりとりさせる良い方法は思いつきませんが…、
・・・、
IIS鯖でなら、Response.Redirectで、クライアント側を経由しない
Server.Execute(strPath)
Server.Transfer(strPath)
なんてのが実装されたなんてニュースをかなーーり昔に見た記憶があります。
実際、つかったことはないので、なんともですが、
クライアント側を経由してRedirectでパラメータを渡すよりは、安全なのかなぁと…思ったんですが…。
…。
絶対パスの指定は無理とか書いてある文章を見つけてしまいました。
ん〜〜…。ごめんなさい。これは無理そうですね。
もし、ログインセッションをリアルタイムでバチッと管理したいのであれば…
ログインサーバのようなものをたてて集合管理されるのが一番かと思います。
バックエンドのデータベースにセッション情報をすべて格納しておきます。
クライアント側では、とにかくセッションIDだけを持ち回れば良いのでは?
あ、そういえばPHPでそういう専用の命令までありましたっけ・・・
やっぱDBなんですね。
なんとなくそうかなーとは思ってたんですが。
http://sourceforge.net/projects/phpform-ext/
SourceForge.net: PHP Form Extension Project
PHPだと自前でDBで格納するセッション管理のクラス
なんかを作るのも良いかと思いますが、
私的にお勧めなのが、session_pgsqlですね。
PHPで普通に使われているsession処理関数
(session_start()とか)を使うと指定したPostgreSQLに
セッション内容を保存してくれます。
PostgreSQLの設定以外まったく既存のPHPコードを
変更することなくsessionデータを複数のサーバーで
共有できます。
その他にも、
・DBの自動負荷分散
・DB障害時の自動切替え
・ガーベッジコレクション
・テーブルの自動作成
等の機能がついており非常に便利で重宝します。
以前構築したシステムでも5台セッションサーバーを
用意して負荷分散しましたがまったく問題なく動作
してました。
クラス版の方を使うのでは無く、PHPのモジュールの
方を使ったほうが高速です。
phpize => configure => make して、extensionと
してPHPに組み込むと良いと思います。
フーム、カンペキですね。
まさしくPHP+PostgreSQLなので、ぜひ使わせていただきたいと思います。
ありがとうございます。
確かにIISならserver.transferを使えばできますね。