增長PHP的Session存儲和處理能力

可能不少PHPer都用到了PHP提供的Session功能,能夠方便的進行會話功能處理,PHP服務端默認的session存儲是文件存放方式,在Windows上PHP默認的Session服務端文件存放在C:\WINDOWS\Temp下,*NIX下默認存放在/tmp下,若是說併發訪問很大或者session創建太多,在這兩個目錄下就會存在大量相似sess_xxxxxx的session文件,同一個目錄下文件數過多會致使性能降低,而且可能致使受到***最終出現文件系統錯誤。針對這樣的狀況,PHP自己體提供了比較好的解決辦法。  很多朋友可能都沒有注意到php.ini裏面Session設置部分中有這樣一項:; session.save_path = "N; MODE; /path"  這項設置提供給咱們能夠給session存放目錄進行多級散列,其中「N」表示要設置的目錄級數,「MODE」表示目錄的權限屬性,默認爲600,在WINDOWS上基本是不用設置的,*NIX上也能夠不用設置,後面的「/path」表示session文件存放的根目錄路徑,好比咱們設置爲下面的格式session.save_path = "2; /tmp/phpsession"  上面的設置表示咱們把/tmp/phpsession目錄做爲php的session文件存放根目錄,在該目錄下進行兩級目錄散列,每一級目錄分別是0-9和a-z共36個字母數字爲目錄名,這樣存放session的目錄能夠達到36*36個,相信做爲單臺服務器來講,這是徹底夠用了,若是說您的系統架構設計爲多臺服務器共享session數據,能夠把目錄級增長到3級或者更多。  須要注意的是,php本身並不會自動建立子目錄,須要您本身動手去建立,網上找到這樣的自動建立目錄的代碼,你們能夠作個參考。下面的代碼自動建立3級子目錄,能夠本身動手根據須要進行修改。set_time_limit(0); $string = '0123456789abcdefghijklmnopqrstuvwxyz'; $length = strlen($string); function makeDir($param){if(!file_exists($param)) {makeDir(dirname($param)); mkdir($param); }} for($i = 0; $i < $length; $i++) {for($j = 0; $j < $length; $j++) {for($k = 0; $k < $length; $k++) {makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]); }}}?>  你們可能注意到前面的文字中提到了有關多服務器共享php的SESSION,這是不少應用都會遇到的問題,網上也有很多相關的資源,你們能夠去google一下,Michael這裏只提一下大概的思路。  通常來講咱們用到最多的方法有兩種:  一、NFS或者Samba共享的方法,讓各個服務器上存放session文件的磁盤共享,這種方法簡單可行。  二、集中存儲到數據庫中,這是比較多的實現方法,經過php提供的session_set_save_handler()函數來重定義session函數,推薦使用這種方法。  歡迎你們一塊兒交流和討論php中和session相關的技巧和經驗。
相關文章
相關標籤/搜索