2

I have a question for a school project. How do I do an action when somebody's session gets ended. For instance, I want to delete a file that says a user is logged in when his session ends. If he closes the browser or if he doesn't do any request for a while?

4

2 に答える 2

4

これを直接追跡する方法はありません。ただし、データベースを使用して、ユーザーが最後にページをロードしたときにそこに保存し、X 分間すべて cron ジョブを実行して、過去 Y 分間に何もしなかったユーザーをチェックすることができます。

于 2013-02-01T20:14:02.667 に答える
1

これを行うには、カスタム セッション ハンドラーを記述します。

このサイトでは、適切な説明を見つけることができます:

http://phpmaster.com/writing-custom-session-handlers/

ただし、「ガベージ コレクション」(必要に応じてファイルをクリーンアップすること) は、セッションが閉じられた直後には行われないことに注意してください。

Php は設定「session.gc_probability」を使用します。これは、XXX リクエストごとに、PHP が古い/閉じられたセッションを探し、ガベージ コレクションを開始することを示します。

http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability

于 2013-02-01T20:21:28.927 に答える