PHPセッションの有効期限についていくつか質問があります。

WBOY
リリース: 2016-09-15 11:30:58
オリジナル
1003 人が閲覧しました

php.ini は、デフォルトの session.gc_maxlifetime 値を 1440 に設定します。この値はどのように理解すればよいですか。

ログインが必要なWebサイトにアクセスした場合、通常は操作していればログインに失敗することはありませんが、一定時間操作がないと再度ログインする必要があります。インターネット上の情報を読んで、セッションの保存方法やリサイクルの仕組みについては理解しましたが、まだ明確に理解できない問題があります。

このリサイクルメカニズムが引き起こす可能性のある問題や Cookie については考えないでください (Cookie が常に有効であると仮定して)。

session.gc_maxlifetimeがデフォルト値の1440に設定されているとして、初回ログイン時にセッションを操作し、ユーザー情報を保存し、それ以降はセッションを変更しませんでした。

  • 今後どれだけリクエストを行っても、このセッションの変更時刻はログインした時刻のままになるというのは本当ですか?

  • この Web サイトを操作しているかどうかに関係なく、1440 秒を超えるとセッションは無効になりますか?

  • それとも、私がこの Web サイトで操作していた場合、セッションの変更時刻が更新されます。つまり、この Web サイトで 1440 秒以上アクティブでなかった場合にのみセッションが削除されるということでしょうか?

  • それとも、セッションは変更時間に基づいて削除されず、一定期間非アクティブになった場合にのみ削除されますか?

もっと詳しい回答が得られると思います、ありがとう!

返信内容:

php.ini は、デフォルトの session.gc_maxlifetime 値を 1440 に設定します。この値はどのように理解すればよいですか。

ログインが必要なWebサイトにアクセスした場合、通常は操作していればログインに失敗することはありませんが、一定時間操作がないと再度ログインする必要があります。インターネット上の情報を読んで、セッションの保存方法やリサイクルの仕組みについては理解しましたが、まだ明確に理解できない問題があります。

このリサイクルメカニズムが引き起こす可能性のある問題や Cookie については考えないでください (Cookie が常に有効であると仮定して)。

session.gc_maxlifetimeがデフォルト値の1440に設定されているとして、初回ログイン時にセッションを操作し、ユーザー情報を保存し、それ以降はセッションを変更しませんでした。

  • 今後どれだけリクエストを行っても、このセッションの変更時刻はログインした時刻のままになるというのは本当ですか?

  • この Web サイトで操作しているかどうかに関係なく、1440 秒を超えるとセッションは無効になりますか?

  • それとも、私がこの Web サイトで操作していた場合、セッションの変更時刻が更新されます。つまり、この Web サイトで 1440 秒以上アクティブでなかった場合にのみセッションが削除されるということでしょうか?

  • それとも、セッションは変更時間に基づいて削除されず、一定期間非アクティブになった場合にのみ削除されますか?

もっと詳しい回答が得られると思います、ありがとう!

SESSION はページにアクセスするたびにリサイクルされます:

リサイクルの確率 = session.gc_probability/session.gc_divisor、デフォルトは 1/1000 です。1 に設定すると、SESSION 存続期間 (session.gc_maxlifetime、デフォルトは 1440 秒、つまり 24 分) を超えるたびにアクセスされます。 , SESSION は、クライアントが SESSION 内の変数にアクセスするたびに、クライアントに保存されている PHPSESSID Cookie に基づいて、サーバーに保存されている一意の SESSION を要求するたびに更新されます。クライアントの Cookie の有効期限が切れると、どの SESSION にアクセスしているのかを知ることができなくなります。ただし、この時点ではサーバー上の SESSION ファイルの有効期限は切れておらず、回復されていないため、ユーザーが「終了」をクリックして終了すると、サーバーのリソースが無駄に消費されます。 " ボタン システムでは、この時点でプログラムは Cookie とセッションをログアウトできます。ユーザーがブラウザを閉じてシステムに通知せずに終了した場合、sess_PHPSESSID ファイルは手動でのみリサイクルできます。

PHP のセッションは、期限切れのセッション ファイルが自動的に消えることはなく、リクエストを通じて「リサイクル」をトリガーすることで処理されます。
この時点で、スケジュールされたタスク (crontab) が期限切れのセッションを自動的に削除できます。 :
24 分前からファイルを抽出して削除します:
find /path/to/sessions -cmin +24 -type f | xargs rm

この値は、ページを最後に更新してからの時間です。つまり、ページを更新してから 24 分間何も操作を実行しないと、サーバーはセッションを削除します。ただし、削除されるかどうかは、php.ini で設定された削除ヒット率に関係します。たとえば、session.gc_divisor=1000、session.gc_probability=1 ということは、1,000 人のユーザーが session_start() を呼び出すたびに、 100% ガベージ コレクション メカニズムが実行され、ディスク上の不要なセッション ファイルが削除されます。そして、この削除では、どのユーザーのセッション ファイルであるかがわかりません。したがって、セッションはセッション技術であり、ブラウザを閉じて書き換えるかどうかと合わせて理解できます。つまり、ブラウザを閉じればセッションは切断され、当然セッションは無効になります。 。 。 。私の個人的な理解は簡単です。間違いがある場合は、誰かが私を修正してくれることを願っています?

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート