セッションは PHP にあり、クラスとして定義されていません。代わりに、セッションを操作するための一連のセッション関数があります。セッションを破棄したことを確認するには、次のように明示的に呼び出す必要があります。
session_destroy();
セッションを破棄していない場合、セッションはセッション タイムアウト後にガベージ コレクションを行います。ガベージ コレクションは、session.gc_maxlifetime、session.gc_divisor、および session.gc_probability のパラメーターに依存します。ガベージ コレクションがすべてのセッションで確実に実行されるようにするには、session.gc_probability を 100% に追加する必要があります。ただし、特にトラフィックの多いサーバーの場合は、サーバーにオーバーヘッドが確実に追加されます。
セッションを明示的に追跡せず、使用後に破棄すると、セッション管理の一部を OS に任せることになります。PHP.net のメモを参照してください。
注: デフォルトのファイルベースのセッション ハンドラを使用している場合、ファイル システムはアクセス時間 (atime) を追跡する必要があります。Windows FAT はそうではないので、atime 追跡が利用できない FAT ファイルシステムまたはその他のファイルシステムで行き詰まっている場合は、セッションのガベージ コレクションを処理する別の方法を考え出す必要があります。PHP 4.2.3 以降、atime の代わりに mtime (更新日) を使用しています。したがって、atime 追跡が利用できないファイルシステムで問題が発生することはありません。
最良の方法は、ブラウザーまたはタブが閉じられたときに Ajax 呼び出しを介してフラグを送信することです。javascript のwindow.onunloadイベントを介して検出できます 。