2016年12月04日
このエントリーをはてなブックマークに追加
PHPのセッションが大量になると、セッションフォルダ内に大量のセッションファイルが作成されてしまいます。

# vi /etc/php.ini
;session.save_path = "N;MODE;/path"
session.save_path = "2;/path"

で、この状態でURLにアクセスすると、no such file or directory というエラーが表示されてしまいます。

階層化されているので、そのフォルダが無いのは容易に想像できました。しかし自動で作ってくれるだろうから、書き込み権限が無いのだろうか。そのように思っていたのです。

しかし実際には、自動で作成されない のでした。

PHP のセッションを階層化されたディレクトリに保存する

で、上記サイトを参考にして、ファイルをダウンロードし実行すると、フォルダが作成されるようです。
※フォルダ名は設定値によって利用される文字数がことなるようです。session.hash_bits_per_character で検索してください。4、5、6の値が設定可能みたい。


なおこのように階層化すると、ガベージコレクションが実行されないようです。

xargs などで古いファイルを削除するように cron で実行する必要があります。

参考
PHPセッションの階層分け
phpはsub directoryを自動生成しない


stock_value at 16:15│Comments(0)TrackBack(0)技術:2016年 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔