teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

cookie_lifetime

2019/06/20 09:48

投稿

hide0128
hide0128

スコア245

answer CHANGED
@@ -2,4 +2,20 @@
2
2
  セッションが無い時は作成し、開いた時間をセッション変数(t)にSAVE
3
3
  セッションがある場合は、開いた時間をセッション変数(t)と比較して、一定時間経過後に画面Bに遷移させる。
4
4
 
5
- そもそもプログラム側でセッション時間比較せずとも、セッション有効期間の設定でセッション値が取れなくなるので不要です。
5
+ そもそもプログラム側でセッション時間比較せずとも、セッション有効期間の設定でセッション値が取れなくなるので不要です。
6
+ 画面を最初に開いた時からの経過時間を制限したい場合は、クッキーの有効期間で制御します。
7
+
8
+ session.cookie_lifetime
9
+ ブラウザにセッションIDのCookieを発行する際のCookieの有効期限。
10
+ ブラウザはこの期限を過ぎるとCookieを破棄するので、結果としてセッションが途切れることになる。
11
+ デフォルトは0で"ブラウザを閉じるまで"という意味。
12
+
13
+ session.gc_maxlifetime
14
+ サーバに保存されているセッションファイルを保護する有効期限。
15
+ セッションデータそのものの有効期限ではないし、そのような設定項目はない。
16
+ **リロードされないまま**有効期限を過ぎたら、その後セッションファイルが削除される可能性がある。
17
+
18
+ session.gc_divisor
19
+ session.gc_maxlifetimeを過ぎると必ずセッションファイルが削除されるわけではなく、PHPにリクエストがあったときに(session.gc_probability / session.gc_divisor)の確率でGCが起動して実際に削除される。
20
+ セッションファイルそのものには有効期限は書かれていないため、session.gc_maxlifetimeを過ぎてもGC起動前であればセッションデータにアクセス可能。
21
+ デフォルトはsession.gc_probability=1、session.gc_divisor=100で、1%の確率でGCが起動する。