国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

怎樣增加PHP的Session存儲和處理能力

2024-05-04 21:52:02
字體:
來源:轉載
供稿:網友

可能很多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這里只提一下大概的思路。

一般來說我們用到最多的方法有兩種:

1、NFS或者Samba共享的方法,讓各個服務器上存放session文件的磁盤共享,這種方法簡單可行。

2、集中存儲到數據庫中,這是比較多的實現方法,通過php提供的session_set_save_handler()函數來重定義session函數,推薦使用這種方法。

歡迎大家一起交流和討論php中和session相關的技巧和經驗。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太和县| 五原县| 剑河县| 太仓市| 喀什市| 潞城市| 雷山县| 平昌县| 丰原市| 乐陵市| 和田市| 娱乐| 乌苏市| 宁远县| 昌邑市| 日照市| 宜黄县| 建平县| 镇巴县| 阳新县| 河北省| 南召县| 湖北省| 连州市| 胶州市| 盐源县| 穆棱市| 体育| 库车县| 阆中市| 镇原县| 宕昌县| 通城县| 教育| 措美县| 德清县| 永顺县| 女性| 台东县| 宁城县| 莱州市|