session_tmp 目錄下檔案超過 70,000 個根因:單一目錄下檔案過多,導致檔案系統查找、inode 分配效率急劇下降。
修改 php.ini:
session.save_path = "2;/data/session_tmp"
意義:Session 檔案將按前 2 個字元分佈至兩級子目錄,如:
/data/session_tmp/4/b/sess_4b1e384ad74619bd212e236e52a5a174If
PHP 不會自動建立子目錄,需手動執行建立腳本:
<?php
$chars = '0123456789abcdefghijklmnopqrstuvwxyz';
$len = strlen($chars);
for ($i = 0; $i < $len; $i++) {
for ($j = 0; $j < $len; $j++) {
$dir = "/session_tmp/{$chars[$i]}/{$chars[$j]}";
if (!is_dir($dir)) mkdir($dir, 0755, true);
}
}
?>
N 參數(層級)> 0 時,自動垃圾回收將失效,需自行實作清理機制session.save_path 值必須用雙引號包裹,因分號 ; 在 ini 中為註解符號