- - PR -
セッションの開始と終了
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-22 10:17
web初心者なのですが、セッションの開始と終了
に関して、うやむやな点があります。 ASP.NETで開発する予定なのですが @あるサイトで「新規のセッションが開始されたときに発火するSession_OnStartイベン ト...」という表現があったのですが、そもそも新規セッショの開始とは、誰がど のタイミングで行うものなのでしょうか。ASP.NETがクライアントのブラウザから要求 がある度に開始され、Session_OnStartイベントが発生するものなのでしょうか。 A入力画面があり自分の意思でログアウトするまでタイムアウトにはしたくない 場合、営業時間が10時間なので開店時、ログインして、閉店時、ログアウト という運用にしたいという要望の場合、セッションは1つだと認識しています。 そこで、単純にセッションのタイムアウト時間を11時間にしようと考えて いるのですが、ログアウト時にsession.Abandonを発行すれば、サーバー上に保持 していたセッション情報を解放することで問題はないでしょうか。 すごく、低次元の質問で大変申し訳ありませんが、ご教示願えれば幸いです |
|
投稿日時: 2008-02-22 11:34
本文はほぼ正しい参考としてください。詳しくは本でも買って読んでください。
@Sessionの管理(開始)はASP.NET(ModuleHandler)が認識すると開始します。トリガーはブラウザがSessionIDを持っているかどうか(クッキー等で保持)です。(持っていなければ新しいSessionとなります)※別の話として、ここに潜在的な問題がありますが・・・ AWeb.configでセッション時間が定義できるので(長く)変更可能です。但しPVが多い場合はメモリーが爆発してASP.NETが停止もしくは応答しなくなりますので注意してください。 注)ログアウト時にsession.Abandonはした方が良いですが、同一セッションのブラウザが2つ開いた場合は1つが処理できなくなります。 |
|
投稿日時: 2008-02-22 13:17
indigo-xさん。回答ありがとうございます。
@に関しては、分り易い説明で納得しました。 Aに関しては、PVの数が懸念点ということですね。セッションの保持はサーバのメモリを使用するという認識はあったのですが、ページを開く度にサーバーのメモリに蓄積されるということなのでしょうか?ログアウト時にsession.Abandonをすることにより、セッション時間を11時間とWeb.config に指定していて、実際はログインしてからログアウトまで2時間しかなかったとしたら サーバー上のメモリのセッション情報は2時間で解放されるということですね。 今回の運用では、同一セッションで2つのブラウザは開けない様な画面構成なので そこは問題ないかなと考えています。仮に開けたとしても作業員は1人だけなので 2つとも処理終了して問題ないです。 PV情報の保持(サーバーへのメモリ保持)について調べてみます。 |
|
投稿日時: 2008-02-22 13:25
indigo-xさん。たびたびすいません。
少し、誤解していた様な気がしました。 >但しPVが多い場合はメモリーが爆発してASP.NETが停止もしくは応答しなくなりますので注意してください。 というのは、PV情報をセッション情報に蓄積していくので、PVが増えればメモリが爆発するということですね。(これも違うのかな?) セッション情報に、PV情報を蓄積しない。とか、最新のPV情報だけにするとかにしたらメモリの増大はあまり考えなくても済むのかなと思いました。 とんちんかんな、返答であれば申し訳ありません。 |
|
投稿日時: 2008-02-22 13:39
そうですね。セッション変数に溜め込むと爆発する(誰も解放しないので)意味です。
簡単に言えばPV×セッションデータ量が大きくなればaspnet_wp.exeが固まる(自動再起動します) 参考になればと思います。 |
|
投稿日時: 2008-02-22 14:59
indigo-xさん。本当にありがとうございました。
すごく参考になりました。 今回の要件からすると、PV情報を貯め込む必要なはいかなと 判断していますから爆発は心配ないかなと...。 そもそも、セッション管理事態する必要があるか とも考えているのですが、やはり今後の展開を考慮して セッション管理はやっておきたいです。 大変、参考になりました。これから、webの勉強、勉強です。 |
1