Session數(shù)據(jù)區(qū)
默認以 文件的形式存儲與服務器操作系統(tǒng)臨時目錄中!
當 session數(shù)據(jù)區(qū)過多時,文件形式的存儲,操作速度變慢。磁盤的讀寫(IO,input/output)開銷是很大的。
實際項目中,都會采用其他的方式更快地存儲session數(shù)據(jù)。典型的辦法:數(shù)據(jù)庫,內存。
以 數(shù)據(jù)庫存儲為例,講解:session數(shù)據(jù)入庫!
重寫 與 session數(shù)據(jù)區(qū)直接的相關操作即可:
最基本的只有2個:讀,寫!
一:定義2個可以完成讀和寫的函數(shù)。
二:告知session機制,在需要讀寫時,使用用戶自定義的讀寫函數(shù)完成。
定義2(其實共6個需要的相關函數(shù))個可以完成讀和寫的函數(shù)

告知session機制,在需要讀寫時,使用用戶自定義的讀寫函數(shù)完成
Session_set_save_handler(
開始函數(shù),結束函數(shù),讀函數(shù),寫函數(shù),刪除函數(shù),GC函數(shù)
);
用來將用戶自定義的函數(shù),設置成session存儲相關的函數(shù)。

以上的語法,僅僅是設置告知,不是調用以上6個函數(shù),這六個函數(shù),在session機制運行到某個時間點時,才會被調用!例如,咋開啟session時,才需要調用sessRead()
常規(guī)使用session開啟session機制
操作$_SESSION

該session中,每條記錄,就是一個session數(shù)據(jù)區(qū),相當于原來的一個session文件。
表結構:

誰調用,誰傳參!
在PHP的session機制調用該函數(shù)時,會將當前的session-ID作為參數(shù)傳遞到函數(shù)中:
因此,需要定一個形參,接受傳遞的session-ID參數(shù):
需要返回,讀取到的session數(shù)據(jù)字符串。就是sess_content字段的內容。如果沒有讀到,則返回空字符串即可,表示沒有session數(shù)據(jù)。

當PHPsession機制調用該函數(shù)執(zhí)行寫操作時,會將 當前session-ID和 需要寫入的內容(序列化好的)傳遞到函數(shù)!
需要2個形參來接收:

測試:


銷毀session時。
執(zhí)行了html' target='_blank'>PHP函數(shù):
Session_destroy();
可以銷毀session,刪除對應的session數(shù)據(jù)區(qū),同時關閉session機制!

由于需要刪除session數(shù)據(jù)區(qū),需要增加用于刪除的方法:
PHP的session機制,在調用sessDelete時,會傳遞 當前session-ID作為參數(shù):
需要定義形參來接收:

垃圾回收操作:sessGC()
垃圾:服務器上過時的session數(shù)據(jù)區(qū)。、
垃圾如何判定?如果一個session數(shù)據(jù)區(qū)已經(jīng)超過多久沒有使用(最后一次寫操作)了,就是被視為垃圾數(shù)據(jù)。
該時間臨界點:默認1440s??梢员慌渲茫?/p>

配合最后寫入時間,就可以斷定是否為垃圾
需要增加字段,記錄最后寫入時間。


寫入時,更新該字段:
sessWrite();


判斷條件:過期
Last_write < 當前時間-1440
如何刪除?在 session_start()過程中,開啟session機制過程中:有幾率地執(zhí)行 垃圾回收操作。一旦執(zhí)行,就會刪除所有的過期的垃圾數(shù)據(jù)區(qū)。
默認的概率為1/1000。
可以設置該幾率:
可能性:

基數(shù)(除數(shù)):

調整幾率測試:
建議在腳本周期調整,使用函數(shù)ini_set(),在開啟session機制前完成:

實現(xiàn) sessGC()
PHP的session機制將 最大有效期作為參數(shù),傳遞過來!

初始化工作
可保證在第一個執(zhí)行。將初始代碼,在sessBegin完成:
例如初始化數(shù)據(jù)庫連接:

收尾性工作
Return true;

Session_set_save_handler()先于session_start()被調用。
不要自動開啟session!php.ini: session.auto_start = 0
PHP配置項:session.save_handlerPHP所使用的存儲機制:

最后建議,將以上配置改為 user: 表示用戶自定義!
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答