小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

php重寫session的存儲機制

 quasiceo 2016-07-25

php重寫session的存儲機制

重寫session的存儲機制

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

 

創(chuàng)建session表

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

表結構:

 

讀操作:sessRead()

  誰調用,誰傳參!

在PHP的session機制調用該函數(shù)時,會將當前的session-ID作為參數(shù)傳遞到函數(shù)中:

因此,需要定一個形參,接受傳遞的session-ID 參數(shù):

需要返回,讀取到的session數(shù)據(jù)字符串。就是sess_content字段的內容。如果沒有讀到,則返回空字符串即可,表示沒有session數(shù)據(jù)。

 

寫操作:sessWrite()

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

需要2個形參來接收:

 

測試:

 

 

刪除操作:sessDelete()

銷毀session時。

執(zhí)行了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。可以被配置:

 

  配合最后寫入時間,就可以斷定是否為垃圾

需要增加字段,記錄最后寫入時間。

 

  寫入時,更新該字段:

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ù),傳遞過來!

 

開始操作sessBegin():

初始化工作

可保證在第一個執(zhí)行。將初始代碼,在sessBegin完成:

例如初始化數(shù)據(jù)庫連接:

 

結尾操作sessEnd():

收尾性工作

Return true;

 

語法細節(jié)

先設置在開啟session機制

Session_set_save_handler()先于session_start()被調用。

不要自動開啟session!php.ini: session.auto_start = 0

PHP配置項:session.save_handler

PHP所使用的存儲機制:

最后建議,將以上配置改為 user: 表示用戶自定義!

 

 

1
0
(請您對文章做出評價)
上一篇:php類模塊引擎PDO操作MySQL數(shù)據(jù)庫簡單闡述

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多