0

こんにちは私は、ユーザーが適切にログアウトしない場合にデータベースを更新する方法を考え出そうとしています。session.gc_maxlifetimeを利用するのが正しい方法のようです。有効期限が切れてガベージコレクターがセッションを破棄したときに関数を呼び出すことはできますか?また、gc_maxlifetimeはどのようにタイマーをリセットしますか?$ _SESSION変数が更新されたときですか?または単にクライアントの要求?

私は解決策を見つけようとしましたが、それらはすべてユーザーの操作を伴います。たとえば、カスタムセッションタイマーを設定し、ユーザーが長時間非アクティブになってからWebページを操作すると、「ログアウト」機能が開始され、セッションが破棄されます。

4

1 に答える 1

1

独自のセッションハンドラーを記述し、それをで適用することにより、セッションGCにフックできますsession_set_save_handler()。パラメータとして指定された関数はgc、セッションでGCを実行するときに呼び出されます。

これらの関数はシリアル化されたセッションデータにのみアクセスでき、セッションが使用するシリアル化形式は通常のPHPシリアル化方法とは微妙に異なることに注意してください。GCプロセス中にユーザーデータを読み取ろうとしている場合、それを行うのはそれほど楽しいことではありません。

代わりに、セッションIDが付加されたユーザーアクティビティを個別に記録し、非アクティブとログアウトの欠如を個別のメカニズムとして追跡することをお勧めします。

于 2012-12-09T19:28:42.137 に答える