首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Session 多級目錄儲存配置與效能優化

     編輯:PHP 綜合知識

問題背景

預設 Session 檔案全存於 /tmp,單一目錄檔案過多導致 inode 耗盡、目錄讀取變慢。啟用多級雜湊目錄可大幅改善。

php.ini 設定

; 2 級目錄,儲存於 /tmp/session
session.save_path = "2;/tmp/session"

; 雜湊函式:1=SHA-1 (建議)
session.hash_function = 1

; 每字元位元數:5 (字元集 0-9,a-v),目錄數 32^2=1024
session.hash_bits_per_character = 5

建立目錄結構腳本

PHP 原始碼附帶 ext/session/mod_files.sh:

cd /path/to/php-source/ext/session
chmod +x mod_files.sh
# 參數:基礎路徑、層級、hash_bits_per_character
./mod_files.sh /tmp/session 2 5

將建立 /tmp/session/0/0 ... /tmp/session/v/v 共 1024 個子目錄。

權限設定

chown www-data:www-data /tmp/session
chmod 700 /tmp/session
# 遞迴套用子目錄權限
find /tmp/session -type d -exec chmod 700 {} \;

驗證生效



補充說明

  • session.hash_function=1 (SHA-1) 比 MD5 更難碰撞,安全性較高。
  • hash_bits_per_character=5 產生的 Session ID 長度為 32 字元(160 bits / 5 = 32),目錄分佈均勻。
  • 若流量極大,可調整為 3;/tmp/session 三級目錄(32^3=32768 目錄)。
  • 定期清理過期 Session:find /tmp/session -type f -cmin +24 -delete(配合 gc_maxlifetime)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved