今から PHP 触る

pukiwiki の挙動に不審な点があるため、今から PHP を触る。
sessionファイルが大量に溜まる。

セッション変数は、スーパーグローバル変数として扱われます。

なんと1。

session.save_pathのパスの深さが2より大きい場 合、ガーベッジコレクションは行われません。 session_save_path()も参照してください。

なんと2。

session.gc_maxlifetime = 1
session.gc_probability = 100                                                                                                 
session.gc_divisor     = 100 

にしてアクセスしても session ファイル消えない。
そりゃそうだデフォルトの path が /var/lib/php5 だもの。

session.save_path = /tmp 

にしても相変わらず /var/lib/php5 に吐かれる。
php.ini をドキュメントルートにも置いてみる。利いてないな。


方針を変える。自前で GC しよう(GCというほどの処理じゃないのが悲しい)

  • ログインに成功したものはセッションファイルのサイズが 1 以上
  • 失敗したり、セッションが作られただけのものはサイズが0

なので、0なものはサクサク消す。1以上のものは1週間経ったら消す。


こんなのを cron に仕込んだ。

find /tmp/ -empty -name "sess_*" -delete
find /tmp/ -name "sess_*" -mtime +7 -delete

やるきモリモリのところご迷惑をお掛けしました→id:yamanetoshiさん