セッションのセッションについてgc_*


ログインタイムアウト、自動的にページを終了する問題について!
私のやり方はセッションでコントロールすることです
失敗1:php.iniでセッションが無効になる時間を設定し、セッションを設定します.gc_maxlifetimeは180ですが、5分も待っていました(8分もあるかもしれませんが)、私はまだシステムに入ることができます.設定後にlinuxを再起動します.
失敗2:プログラムに関数ini_を挿入set('session.gc_maxlifetime',180);(session_start前に加入)、タイムアウト後も入ることができる.
最初はよく分からなかったので、セシオンファイルを制御するためのものだと思っていました.ここで設定した時間、期限切れ後、/tmp/sess_*のファイルは自動的に削除されます.
それから自分でテストをしてもだめらしい.
ドキュメントを見ると、sessionのconfigure optionにはgcに関する3つがあります.それぞれ:
session.gc_probability "1"PHP_INI_ALL
session.gc_divisor "100"PHP_INI_ALL Available since PHP 4.3.2.
session.gc_maxlifetime "1440"PHP_INI_ALL
一人一人見ましょう.
まずgcは何ですか?
gcは、garbage collectionの略称である.このプロセスは一般的に1つのSESSIONごとに実行する.gcの目的はsessionファイルが期限切れになった後にこれらのファイルを自動的に破棄して削除することである.3つのパラメータの大まかな使い方を推測したのではないでしょうか.
1、session_gc_probaility
PHPのデフォルトでは、SESSION起動ごとにGCが起動して追跡するわけではありません.このパラメータはgcとsessionの起動確率を制御する.デフォルト1.値が大きいほど確率が高くなります.
2、session.gc_divisor
機能は同じです.デフォルトは100です.値が小さいほど確率が高くなります.
3、session.gc_maxlifetime
設定時間を超えると、gcはゴミファイルとみなされます.
まとめ
session_gc_义齿gc_divisorはgcの起動確率を制御する2つのパラメータである.前者は分子で,後者は分母である.デフォルトは1/100です.1%の確率.すなわち、100個のリクエストのうち1個のgcのみが100個のリクエストに伴って起動する.
SESSIONの期限切れについてはもっと明確な認識があるはずです
セッションだけだcookie_LifetimeはSESSIOnの期限切れを制御する.
iniを直接変更するか、ini_set();そしてセッション_set_cookie_params()で修正します.
<?php
ini_set("session.gc_divisor", 1);
ini_set("session.gc_maxlifetime", 5);
ini_set("session.cookie_lifetime", 10);

session_start();

if (isset($_SESSION['test']))
{
echo SESSION_ID();
echo "<br>";
echo $_SESSION['test'];
}
else
{
$_SESSION['test'] = date("Y-M-D H:i:s");
}

echo "<br>";
echo ini_get("session.gc_maxlifetime");
echo "<br>";
echo ini_get("session.cookie_lifetime");


?>

この場合、gcの最大有効期限はSessionの有効期限より短いが、sessionの有効期限に従って有効期限が切れる.
注意:WEBはトリガ式です.だからあなたが直接IEを閉じる場合、sessionファイルも依然として存在します.
注意:
1、sessionはデフォルトでファイルで保存されますが、多くのsessionは1つのディレクトリの下でアクセスしにくいです.php.iniにはsession分子ディレクトリを保存できる設定があります
session.save_path="N;/path"Nは、セッションに設定できるなど、いくつかのサブディレクトリを表す.save_path = "2;/tmp"
しかし、分子ディレクトリを設定すると、元のgarbage collectionは役に立たず、shellタイミングで実行するなど、期限切れのセッションを自分で明らかにする必要があります.
(以上、php.iniのコメントをよく見るとわかります)
2、多くの人はphpプログラムの頭部でsessionを開くのに慣れています.それを放っておくと、プログラムが終わると自動的にsessionが閉じます.しかし、sessionは、特に実行時間の長いプログラムよりも早く閉じるべきです.sessionファイルは開くときに独占的であるため、例えばa.phpが開いたsessionファイルは閉じず、自分のプログラムが長い間実行される.同時にb.phpを開くにもsessionが必要です.a.phpが実行されるまで待たなければなりません.
したがって、a.phpはセッションを事前に処理し、それを閉じて他の機能を実行することをお勧めします.