PHPSESSIONのガーベッジコレクション

PHPのセッションタイムアウトはphp.iniで設定されているsession.gc_maxlifetimeで秒設定できますが、そもそもガーベッジコレクションの起動タイミングがよく分からなかったので調べてみました。

ガーベッジコレクションのメソッドがCallされるのは、session_start()時みたいですが、毎回ではなく(毎回起動するのはナンセンスなので)以下の2つの設定値から起動確率をもって起動するみたいです。

session.gc_probability/session.gc_divisor

デフォルトでは

session.gc_probability=1
session.gc_divisor=100

になってます。

基本session_start()がCallされる≒リクエスト受付になると思うので、1秒間に100回リクエストが発生するするサイトだと少なくとも1秒毎にガーベッジコレクションが起動するようになってます。

小規模サイトだけど内容がシビアなサイトはデフォルト値を見直す方がいいんやろね。

via こりゃまたPHP!~PHP概説めにー : こりゃまたphp.iniの設定: