私のconfig.php
では、私の設定ファイルのセッション関連の設定は以下の通りです。コードイグナイタでセッションタイムアウトを延長するには?
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1800; //30 minutes
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'rd_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
サイトの通常の使用状況では、セッションはログインの30分後に終了します。しかし、私は自分のウェブサイトにユーザーがタイマーベースのタスクを再生できる機能を持っています。 たとえば、ユーザーがボタンをクリックすると、タイマーが開始され、何度か何らかのタスクが実行され、終了ボタンがクリックされ、タイマーが停止してデータベースに時間が保存されます。
ここでの問題は、タスクが30分を超えることがあるため、ユーザーがタイマーを再生しているときにセッションが終了することです。他のユーザー(タイマーを再生していない人)は30分後にタイムアウトしなければならないので、設定でsess満了時間を変更することはできません。したがって、other threadで提案されているように、ユーザーがタイマーを開始すると、sess満了時間を動的に変更するajax呼び出しを行います。 -
public function sessiontimeout($time){
$session_lifetime = $time > 0 ? $time: 864000;
$this->config->set_item('sess_expiration', $session_lifetime);
echo "Session lifetime set to ".$this->config->item("sess_expiration")." seconds";
exit;
}
これはうまくいきませんでしたが、ユーザーは30分でログアウトします。どのようにタイマーをクリックしたときにこれを達成できますか?ajax呼び出しが既存のタイムアウトを延長するために行われ、タイマーが停止するとセッションの有効期限が30分にリセットされます。
ありがとうございました