PHP はセッションを自動的にクリアします
セッションは、Web 開発で一般的に使用されるサーバー側の状態管理メカニズムです。セッション メカニズムは、ユーザーが Web サイトを閲覧するときに使用できるように、ユーザーに関する情報を Web サイト階層全体に保存できます。セッションは Web サイトを使いやすく、よりインタラクティブにするのに便利ですが、セッションが時間内にクリーンアップされないと、サーバーのメモリを占有してしまいます。したがって、期限切れのセッションが自動クリーンアップによって削除されると期待するのは非常に合理的です。
PHP では、次の方法でセッションの自動クリーニングを実現できます。
php.ini ファイルでは、session.gc_probability と session.gc_divisor の 2 つのオプションを設定できます。 gc_probability を gc_divisor で割った値が 0 に等しい場合、セッションのガベージ コレクション メカニズムが開始されます。
例:
session.gc_probability = 1
session.gc_divisor = 100
これは、セッション ガベージ コレクション メカニズムが 1% の確率で開始されることを意味します。 。このオプションのデフォルト値は 1 です。これは、すべてのユーザー要求がガベージ コレクション メカニズムの開始を試みることを意味します。
ガベージ コレクション メカニズムを同時に自動的に開始するには、次のオプションを追加できます:
session.gc_maxlifetime = 1440
これは、セッションがアイドル状態ではないことを意味します。 1440秒(つまり24分) アクセス後削除されます。
ini_set() 関数を使用して、セッションの有効期限を設定します。例:
ini_set('session.gc_maxlifetime', 1440);
session_set_cookie_params(1440);
このようにして、セッションは期限切れになり、1440 秒後に削除されます。 24分)。
タイマーは、期限切れのセッションを一定の間隔でクリアできます。 setInterval() 関数を使用してタイマーを作成し、タイマー内でセッション クリーンアップ操作を実行できます。
例:
setInterval(function() {
$expire_time = time() - 1440; $files = glob(session_save_path() . '/sess_*'); foreach ($files as $file) { if (file_exists($file)) { if (filemtime($file) < $expire_time) { unlink($file); } } }
}, 600);
ここでは、タイマーは 10 分ごとに実行されます。掃除。セッション ファイルのパスは session_save_path() 関数を通じて取得されます。デフォルトでは /tmp です。
タイマーを使用する場合は、同時実行処理にも注意する必要があります。これは、タイマーがクリーンアップ操作を実行するときに他のユーザーが新しいセッションを作成している可能性があるためです。
最後に、上記の方法でニーズを満たせない場合は、セッションを手動でクリアすることもできます。たとえば、ユーザーが終了すると、session_destroy() 関数を通じてセッションを破棄できます。
例:
session_start();
//ユーザー終了操作の実行
session_destroy();
セッションを手動でクリーンアップするには、開発者がメンテナンスを行う必要があります。時間と労力はかかりますが、より詳細な制御が可能になります。
概要
PHP は、Web サイトのパフォーマンスを向上させながらセッションを自動的にクリーンアップし、セッションがサーバー メモリを過剰に占有するのを防ぐこともできます。 php.ini、セッションの有効期限、タイマー、および手動クリーニングを構成することで、開発者はさまざまなシナリオでセッションをクリーニングし、Web サイトの安定性と可用性を向上させることができます。
以上がPHPでセッションを自動的にクリアする4つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。