解讀增加PHP的Session存儲(chǔ)和處理能力_PHP教程
推薦:如何通過PHP實(shí)現(xiàn)DataGrid功能最近想做一個(gè)通過PHP實(shí)現(xiàn)DataGrid功能的東西,這樣可以直接修改數(shù)據(jù)庫中表的內(nèi)容,而不用開發(fā)【新增數(shù)據(jù)頁面】,【編輯頁面】,于是乎在網(wǎng)上找了找,類似的東西也有幾個(gè),開源的、付費(fèi)的都有,不過基本都是基于MySQL。由于需要連接Oracle所以從二次開發(fā)和頁
可能很多PHPer都用到了PHP提供的Session功能,可以方便的進(jìn)行會(huì)話功能處理,PHP服務(wù)端默認(rèn)的session存儲(chǔ)是文件存放方式,在Windows上PHP默認(rèn)的Session服務(wù)端文件存放在C:\WINDOWS\Temp下,*NIX下默認(rèn)存放在/tmp下,如果說并發(fā)訪問很大或者session建立太多,在這兩個(gè)目錄下就會(huì)存在大量類似sess_xxxxxx的session文件,同一個(gè)目錄下文件數(shù)過多會(huì)導(dǎo)致性能下降,并且可能導(dǎo)致受到攻擊最終出現(xiàn)文件系統(tǒng)錯(cuò)誤。針對(duì)這樣的情況,PHP本身體提供了比較好的解決辦法。
不少朋友可能都沒有注意到php.ini里面Session設(shè)置部分中有這樣一項(xiàng):
; session.save_path = "N; MODE; /path"
這項(xiàng)設(shè)置提供給我們可以給session存放目錄進(jìn)行多級(jí)散列,其中“N”表示要設(shè)置的目錄級(jí)數(shù),“MODE”表示目錄的權(quán)限屬性,默認(rèn)為600,在WINDOWS上基本是不用設(shè)置的,*NIX上也可以不用設(shè)置,后面的“/path”表示session文件存放的根目錄路徑,比如我們設(shè)置為下面的格式
session.save_path = "2; /tmp/phpsession"
上面的設(shè)置表示我們把/tmp/phpsession目錄作為php的session文件存放根目錄,在該目錄下進(jìn)行兩級(jí)目錄散列,每一級(jí)目錄分別是0-9和a-z共36個(gè)字母數(shù)字為目錄名,這樣存放session的目錄可以達(dá)到36*36個(gè),相信作為單臺(tái)服務(wù)器來說,這是完全夠用了,如果說您的系統(tǒng)架構(gòu)設(shè)計(jì)為多臺(tái)服務(wù)器共享session數(shù)據(jù),可以把目錄級(jí)增加到3級(jí)或者更多。
需要注意的是,php自己并不會(huì)自動(dòng)創(chuàng)建子目錄,需要您自己動(dòng)手去創(chuàng)建,網(wǎng)上找到這樣的自動(dòng)創(chuàng)建目錄的代碼,大家可以做個(gè)參考。下面的代碼自動(dòng)創(chuàng)建3級(jí)子目錄,可以自己動(dòng)手根據(jù)需要進(jìn)行修改。
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)用都會(huì)遇到的問題,網(wǎng)上也有不少相關(guān)的資源,大家可以去google一下,Michael這里只提一下大概的思路。
一般來說我們用到最多的方法有兩種:
1、NFS或者Samba共享的方法,讓各個(gè)服務(wù)器上存放session文件的磁盤共享,這種方法簡單可行。
2、集中存儲(chǔ)到數(shù)據(jù)庫中,這是比較多的實(shí)現(xiàn)方法,通過php提供的session_set_save_handler()函數(shù)來重定義session函數(shù),推薦使用這種方法。
分享:談PHP框架對(duì)PHP發(fā)展的影響歷時(shí)三個(gè)月,國外的一個(gè)合作項(xiàng)目終于開發(fā)完了,以為可以休息一段時(shí)間,卻又接到了國內(nèi)的一個(gè)大單子,客戶對(duì)這個(gè)項(xiàng)目的定制性很高,本來想用一下現(xiàn)成的CMS進(jìn)行修改,現(xiàn)在估計(jì)得一步一步寫了。 有朋友建議我使用框架,歷數(shù)目前流行的幾款框架,無非是國外的Cak
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- 壞狼的PHP學(xué)習(xí)第1天!
- 怎樣用PHP編程語言開發(fā)動(dòng)態(tài)WAP頁面
- PHP室寶序竣?php喘送圭塀崙恬抹待夕
- PHP和MYSQL制作動(dòng)態(tài)網(wǎng)站開發(fā)經(jīng)驗(yàn)之談
- 解析PHP編碼規(guī)范之注釋和文件結(jié)構(gòu)
- Fedora下Zend Studio 6.1.2 如何配置
- php 無法加載mcrypt.dll的解決辦法
- 利用php和js來輕松實(shí)現(xiàn)頁面數(shù)據(jù)的刷新
- PHP實(shí)現(xiàn)首頁自動(dòng)選擇語言轉(zhuǎn)跳
- 基于php設(shè)計(jì)模式中單例模式的應(yīng)用分析
- 相關(guān)鏈接:
- 教程說明:
PHP教程-解讀增加PHP的Session存儲(chǔ)和處理能力
。