PHPのセッションファイルをcronでガベージコレクション
投稿日:2015年10月09日
最終更新日:
もくじ
- セッションの設定の確認
- ガベージコレクション用のコマンドの作成
- cronの設定
セッションの設定の確認
まずはphp.iniを開き、セッションについての設定を確認しましょう。チェックすべきなのは、- session.save_path(セッションファイルを保存する場所のパス)
- session.gc_maxlifetime(セッションファイルの寿命)
- session.gc_probabilityとsession.gc_divisor(PHPでsession_start()が呼ばれた時にガベージコレクタが起動する確率の設定 session.gc_probability/session.gc_divisor で計算できる)
ガベージコレクション用のコマンドの作成
さあ、ガベージコレクション用のコマンドを作成していきましょう。なお、セッションファイルは/tmpに保存してあるものとします。皆様の環境に合わせて置き換えてください。PHPで生成されるセッションファイルは、ファイル名がsess_で始まります。というわけで、 [VIM] find /tmp -type f -name sess_* [/VIM] findコマンドで、まずはセッションファイルを検索します。
しかし、このままでは削除コマンドがありませんし、寿命が残っているセッションファイルまで一網打尽にしてしまいます。まずは寿命が切れたファイルだけ抽出します。コマンドが以下のように変わります。 [VIM] find /tmp -type f -name sess_* -mmin +20 [/VIM] -mmin +20で、最終更新時刻が20分以上前のものを抽出しています。セッションの寿命よりも少し長めにしておくのが安全だと思います。
ここまで来たら、抽出された寿命切れセッションファイルを削除するだけです。コマンドはこんな感じになります。 [VIM] find /tmp -type f -name sess_* -mmin +20 | xargs rm [/VIM] xargsは、標準入力から受け取った文字列を、引数として指定されたコマンドに渡します。上の例では、findコマンドで抽出したセッションファイルのリストを引数としてrmコマンドに渡しています。これで寿命切れセッションファイルの一括削除コマンドは完成です。