セッションタイムアウトエラー
いつも参考にしております。
セッションタイムアウトのエラー(???)で困ってます。
ご存知の方がいらっしゃいましたら、ご教授お願いします。
環境:
OS :Windows 2009 Sever
ActivePerl : V5.8.9
Webサーバ :IISv7.0
CGI::Session.pm:v4.41
DB :Oracle 10g
詳細は下記のようです。
1.ログイン成功したら、セッションを作成します。
CGI::Session->name( "SID" );
my $session = new CGI::Session( "driver:File", undef, {Directory => 'C:/Inetpub/wwwroot/xxx/tmp/session'} );
$session->expire( '+10h' );
...省略
2.上記で作成されたセッションIDを画面に保持し、画面遷移する際に
セッションIDの存在チェックを行う
my $session = CGI::Session -> new( undef, $sid, {Directory => 'C:/Inetpub/wwwroot/xxx/tmp/session'} );
if($sid eq $session -> id)
{
// セッションID存在する
// 次の画面遷移する
// セッションタイムアウト再設定
$session->expire( '+10h' );
} else
{
// セッションID存在しない
$session->close;
$session->delete; // 作成されたセッションファイルを削除
// エラー画面表示
}
現象:
セッションタイムアウトの設定時間に経ってないにもかかわらず
たまたまセッションタイムエラーが発生します。
P.S
エラーの原因が特定できず、困ってます。
以上、宜しくお願いいたします
お礼
回答あいりがとうございます。 わたしも最初はその方法を考えていたのですが、 Windowsではシグナル(ALRM)がちゃんと使えないので、 やむなく、IISの設定でタイムアウト時間を 延ばす方向で考えていました。
補足
すいません。自己解決しました。 IISのメタベースファイルを直接編集することで、 設定出来ました。 今後同じような問題を抱えた人のために。 1.IISを停止する。 2.C:\WINDOWS\System32\Inetsrv\MetaBase.xmlを メモ帳などで開く。 3.CGITIMEOUTの項目を探し、タイムアウト値を 秒数で設定する。 4.IISを開始する。 ただし、メタベースファイルが壊れるとIISが動かなく なる恐れがありますので、触る場合は慎重に行う必要があります。 詳しいことはMicrosoftのHPにて調べてください。