2017-06-07 16 views
1

Codeigniterのセッションは、「config/constants.php」ファイルで指定した時間よりも短時間でタイムアウトします。私はその定数を3600秒(1時間)に設定しましたが、時々私は5分または10分で追い出されます。これは、通常のMVC呼び出しで発生し、ajaxは関与しません。Codeigniter 3でlast_activityを取得する方法は?

私はCIセッションのlast_activity値にアクセスしようとしていますが、これはCIドキュメントが現在述べているものです: "last_activity:ストレージに依存し、直接的な方法ではありません。

どうすればその値にアクセスできますか?何か案は?

 
    `$config['sess_driver'] = 'files'; 
    $config['sess_cookie_name'] = 'ci_session'; 
    $config['sess_expiration'] = EXPIRE_SESSION; 
    $config['sess_save_path'] = sys_get_temp_dir(); 
    $config['sess_match_ip'] = FALSE; 
    $config['sess_time_to_update'] = 86400; 
    $config['sess_regenerate_destroy'] = FALSE;' 
+0

私はわかりませんが、あなたはここに '' 'config.php'''であなたの一定の値を取得することはできませんかもしれハードコードされた値で一度試してみてください:3600 – kishor10d

+0

これはsys_get_temp_dir()とは分かりませんが、パスにはAPPPATHのようなものを保存してください。 'cache/sessions /'; ' – user4419336

+0

@ kishor10d:返事をありがとう。 "print 'を実行する

' . print_r($this->config, TRUE) . '
';"実際には "config.php"で定数を使うことができると私に伝えています。値「3600」または「EXPIRE_SESSION」(これも3600)を使用することはまったく同じです。 –

答えて

0

デフォルトのセッション処理スキームを使用している場合は、最後のアクティビティはタイムスタンプ「列」は、または何でもそれはセッションファイルで次のようになります。

はここにいくつかの追加情報です。ページを更新するたびに更新する必要があります。あなたがモーダルにアクセスしたり、AJAX経由でページを操作するようなことをしても、私はチェックしていません。

ここでは、データベースの挿入とマニュアルから、次のようになります。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
     `id` varchar(128) NOT NULL, 
     `ip_address` varchar(45) NOT NULL, 
     `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, 
     `data` blob NOT NULL, 
     KEY `ci_sessions_timestamp` (`timestamp`) 
); 
+0

セッションデータ処理のためのデータベースとファイルの関係について。 'session'メソッドはまったく同じように動作します。 – DFriend

+0

助けてくれてありがとう。私はちょうどいくつかのテストを行い、 "__ci_last_regenerate"のようなものはログイン日を保存しているようです。他のページやコントローラに行ってその値を見ると、変化しません。セッション中は変わりません。しかし、そこに保存されている日付にGMT + 01(1時間後)のタイムゾーンが考慮されていないことに気付きました。これと何か関係がありますか? –

+0

@PedroAraujoJorge私はまったくばかげた答えをお詫びします。私が参照した値は、セッションIDを最後にリフレッシュしたときの値です。それはおそらく私が今までに投稿した最も間違った答えの一つであり、皮肉とメタの答えは含まれていませんでした。私はあなたがそれを無駄にしたときはいつも謝ります。 – Joe

関連する問題