Apache および php 環境では、デフォルトの有効期限は約 20 分です。では、セッションの有効期限をどのように設定すればよいでしょうか。以下に具体的な方法の概要を見てみましょう。
最も一般的に使用されるのは、php プログラムで設定することです
コードは次のとおりです | コードをコピー |
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) |
有効期限を設定したい場合は、プログラム内でインスタンス化することもできます
コードは次のとおりです | コードをコピー |
unset($_SESSION['last_access']) または $_SESSION['last_access']=''; |
セッションには有効期限メカニズムがあります
session.gc_maxlifetime セッションの有効期限が発生する確率は小さいことがわかります。 session.gc_probability と session.gc_divisor は、セッション内で gc が実行される確率を決定するために使用されます。 session.gc_probability と session.gc_divisor のデフォルト値は 1 です。それぞれ 100
はそれぞれ分子と分母であるため、セッション内で GC が実行される確率は 1% です。これら 2 つの値を変更すると、PHP の効率が低下します。したがって、このアプローチは間違っています! !
そのため、php.ini ファイルの gc_maxlifetime 変数を変更すると、セッションの有効期限を延長できます: (たとえば、有効期限を 86400 秒に変更します)
コードは次のとおりです | コードをコピー |
session.gc_maxlifetime = 86400 |
その後、Web サービス (通常は Apache) を再起動します。
セッションの「リサイクル」はいつ行われますか?
デフォルトでは、すべての PHP リクエストに対して 1/100 の確率でリサイクルが行われるため、単純に「100 個の PHP リクエストごとに 1 回のリサイクルが発生する」と理解できます。この確率は次のパラメータによって制御されます
コードは次のとおりです | コードをコピー |
#確率は gc_probability/gc_divisor です |
注 1: この場合、gc_maxlifetime=120 と仮定します。セッション ファイルが最後に変更されたのが 120 秒前であれば、セッションは次のリサイクル (1/100 の確率) が発生するまで有効です。
注 2: セッションが session.save_path を使用してセッションを別の場所に保存する場合、セッションリサイクルメカニズムは期限切れのセッションファイルを自動的に処理しない可能性があります。現時点では、期限切れのセッションを手動 (または crontab) で削除する必要があります。 cd /path/to/sessions; find -cmin +24 |
http://www.bkjia.com/PHPjc/631569.html