PHP セッションではなく、CodeIgniter の組み込みセッションを使用しています (詳細: http://codeigniter.com/user_guide/libraries/sessions.htmlを参照)。また、ユーザーのセッションをデータベースのテーブルに保存します。ユーザーのセッション データが一定期間非アクティブの後にデフォルトにリセットされるという問題が発生しています。私の意図したアクションは、ユーザーがログアウトするか、Cookie をクリアするまで永続化することです。
ここに私の CodeIgniter application/config/config.php 設定があります:
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
理論的には、sess_expiration が 0 に設定されているため、上記のアクションのいずれかが発生するまで存続すると考えました。残念ながら、おそらく 30 分ほどでタイムアウトになるように見えますか? その数は特定できていませんが、ポイントは短すぎるということです。
また、CI と AJAX の呼び出しでさまざまな問題が発生する可能性があることについても読みました。私のウェブサイトは多くの AJAX 呼び出しを使用していますが、誰かが一度ログインして何もせず、約 30 分後に戻ってきて、ログアウトしていることがわかったとしても、セッションは期限切れになります!
編集:誰かがこのトピックに出くわした場合の将来の参考のために:代わりに「記憶」機能の実装に取り組んでいます。これにより、ユーザーのブラウザーに Cookie が保存され、Web サイトにアクセスしたときに確認されます。これは、セッションを無期限に持続させようとするのではなく、私が見る限り、適切な方法です。