ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

Windows環境のApache+PHPで、セッションファイルを削除する方法

2箇所からそれぞれ1セッションずつ接続され、継続的にアクセスがあり、サーバーのメモリ使用量が増加しているサーバーがありました。
Apacheのログを確認したところ、Ajaxでアクセスされているようですが、ページを開いて放置されているだけのようです。
メモリの使用量の増加の原因になっているようなので、サーバーからセッションファイルを削除して、強制的にセッションがタイムアウトしたことにすることになりました。

セッションファイルの削除

方法は簡単で、

  1. phpinfo()で、session.save_pathを確認します。(例:C:\xampp\tmp)
  2. Apacheを停止します。
  3. session.save_pathのフォルダを開き、ファイルを削除します。
  4. Apacheを起動します。

の手順で削除しました。

セッションを削除した結果

接続が1箇所の1セッションのみになり、メモリ使用量の増加が緩やかになりました。
接続が切れた方が問題だったようです。


セッションファイルを削除すれば、2セッションともセッションタイムアウトと同じことになると思っていましたが、1セッションはなりませんでした。
ならなかったのは、クライアントがセッションIDを保持していると継続する仕組みがあるんですかね。
セッションファイルなしで、どうやってセッションIDが正しいと判断しているのか、よくわかりません。
別の仕組みでも管理しているのかな。