怎樣增加PHP的Session存儲和處理能力_PHP教程
推薦:怎樣成為PHP編程高手PHP是一門高效的網(wǎng)絡(luò)編程語言,由于它具有編寫靈活、運行快速等優(yōu)點,迅速成為Web程序員的首選語言。前不久的一份權(quán)威調(diào)查表明,現(xiàn)在已經(jīng)有31.6%的網(wǎng)站使用PHP作為主要的服務(wù)器端編程語言。 但是,要成為一名PHP編程高手卻并不容易。并不像很多人想象的那樣
可能很多PHPer都用到了PHP提供的Session功能,可以方便的進行會話功能處理,PHP服務(wù)端默認的session存儲是文件存放方式,在Windows上PHP默認的Session服務(wù)端文件存放在C:\WINDOWS\Temp下,*NIX下默認存放在/tmp下,如果說并發(fā)訪問很大或者session建立太多,在這兩個目錄下就會存在大量類似sess_xxxxxx的session文件,同一個目錄下文件數(shù)過多會導(dǎo)致性能下降,并且可能導(dǎo)致受到攻擊最終出現(xiàn)文件系統(tǒng)錯誤。針對這樣的情況,PHP本身體提供了比較好的解決辦法。
不少朋友可能都沒有注意到php.ini里面Session設(shè)置部分中有這樣一項:
; session.save_path = "N; MODE; /path"
這項設(shè)置提供給我們可以給session存放目錄進行多級散列,其中“N”表示要設(shè)置的目錄級數(shù),“MODE”表示目錄的權(quán)限屬性,默認為600,在WINDOWS上基本是不用設(shè)置的,*NIX上也可以不用設(shè)置,后面的“/path”表示session文件存放的根目錄路徑,比如我們設(shè)置為下面的格式
session.save_path = "2; /tmp/phpsession"
上面的設(shè)置表示我們把/tmp/phpsession目錄作為php的session文件存放根目錄,在該目錄下進行兩級目錄散列,每一級目錄分別是0-9和a-z共36個字母數(shù)字為目錄名,這樣存放session的目錄可以達到36*36個,相信作為單臺服務(wù)器來說,這是完全夠用了,如果說您的系統(tǒng)架構(gòu)設(shè)計為多臺服務(wù)器共享session數(shù)據(jù),可以把目錄級增加到3級或者更多。
需要注意的是,php自己并不會自動創(chuàng)建子目錄,需要您自己動手去創(chuàng)建,網(wǎng)上找到這樣的自動創(chuàng)建目錄的代碼,大家可以做個參考。下面的代碼自動創(chuàng)建3級子目錄,可以自己動手根據(jù)需要進行修改。
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]);
}
}
}
?>
大家可能注意到前面的文字中提到了有關(guān)多服務(wù)器共享php的SESSION,這是很多應(yīng)用都會遇到的問題,網(wǎng)上也有不少相關(guān)的資源,大家可以去google一下,Michael這里只提一下大概的思路。
一般來說我們用到最多的方法有兩種:
1、NFS或者Samba共享的方法,讓各個服務(wù)器上存放session文件的磁盤共享,這種方法簡單可行。
2、集中存儲到數(shù)據(jù)庫中,這是比較多的實現(xiàn)方法,通過php提供的session_set_save_handler()函數(shù)來重定義session函數(shù),推薦使用這種方法。
歡迎大家一起交流和討論php中和session相關(guān)的技巧和經(jīng)驗。
分享:如何PHP調(diào)用文本文件的內(nèi)容如何用php直接調(diào)用文本文件內(nèi)容:首先通過file函數(shù)打開服務(wù)器上的一個文本文件,返回的$myFile 就將成為這個文件操作的句柄,然后再通過循環(huán)指令,取出文件中每一行的內(nèi)容并打印出來。 編程思路 首先要使用的函數(shù)為fi1e,本函數(shù)與 readfile() 類似,不同的地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-怎樣增加PHP的Session存儲和處理能力
。