- ベストアンサー
Sessionのデータ保持について
- Sessionにデータを保持している状態で、Webサーバーのシステム日付を変更するとデータが消える可能性があるのか?
- 開発環境でデバッグした結果、Sessionの中身がnullになる現象を確認
- データの格納後にWebサーバーのシステム日時を変更すると、取り出したデータがnullになる問題
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんちは。 >>Sessionに保持しているデータが消えてしまうということはありますか? うん? あるんじゃないですか? デフォルト設定のままでも、数時間放置しておけばSession切れると思いますけど。 「数時間」ってのがミソで、その場合の時間判断は、そこのサーバのシステム時間でしか経過時間の判断が出来ませんから、システム時間いじくったら、それに伴ってSessionも時間切れとなって無くなるんじゃないかと思われます。 確証は持ってませんけどね。。。 システム時間動かして検証なんてやったことないですし(汗 Sessionの保持時間設定は、Webサーバレベルや、プログラムソースレベルでも可能なので。。。 ・1時間ぐらいに設定して。。。 実際1時間放置したらSessionが切れること確認する システム時間動かして、「59分」の状態で切れないことを確認する システム時間動かして「1時間1分」経過の状態で切れてることを確認する とか。。。まぁ、そういう確認でもしておけばいいんじゃないかと。 (もしくは、どっかのASP解説サイトでSessionに関しての記述をお勉強する? http://www.netdive.jp/asp.html >>(2)Webサーバーのシステム日付(日時)を変更 そもそも、既にシステムで使ってるWebサーバのシステム時間なんて、そう簡単にがちゃがちゃいじるものじゃありません(笑 時間がずれて、たまに直す必要がある。。。とかでしたら、毎日定時で、ネット経由で標準時間に合わせてくれるようなツールでも起動しておきましょう。フリーで、多分あるでしょう。 解決方法とすれば。。。 Sessionに持たない。しかないかと。 DBに格納するなり、システムソース側で、FORM渡ししとくとか。 まぁ、Sessionが一番確実かとは思うんですけどね。。。 こんな感じですかね? 他の方の知識も参考にしたいので、動向見守ってます-w-*
お礼
STICKY2006さん、とても参考になるアドバイス有難う御座います。 仰るとおり、システム日付(日時)をいじった時点でセッション保持のタイムがオーバーしている場合にエラーになってしまうという、セッションタイムアウトが原因でした。 sessionは利用するタイミングで毎回システム日付とsession生成日時を比較してるんですね! そもそもWebサーバーのシステム日付がいじられることなんて、ほぼ無いというのもごもっともなので、毎日定時でシステム日時を標準時間に合せるという対応のみしたいと思います。有難う御座いました!