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

首頁 > 編程 > PHP > 正文

php重寫session的存儲機制

2020-03-22 20:17:36
字體:
來源:轉載
供稿:網友
  • 重寫session的存儲機制

    Session數據區

      默認以 文件的形式存儲與服務器操作系統臨時目錄中!

    當 session數據區過多時,文件形式的存儲,操作速度變慢。磁盤的讀寫(IO,input/output)開銷是很大的。

    實際項目中,都會采用其他的方式更快地存儲session數據。典型的辦法:數據庫,內存。

    以 數據庫存儲為例,講解:session數據入庫!

    重寫 與 session數據區直接的相關操作即可:

    最基本的只有2個:讀,寫!

    一:定義2個可以完成讀和寫的函數

    二:告知session機制,在需要讀寫時,使用用戶自定義的讀寫函數完成。

    定義2(其實共6個需要的相關函數)個可以完成讀和寫的函數

    告知session機制,在需要讀寫時,使用用戶自定義的讀寫函數完成

    Session_set_save_handler(

    開始函數,結束函數,讀函數,寫函數,刪除函數,GC函數

    );

    用來將用戶自定義的函數,設置成session存儲相關的函數。

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

    常規使用session

    開啟session機制

    操作$_SESSION

    創建session表

    該session中,每條記錄,就是一個session數據區,相當于原來的一個session文件。

    表結構:

    讀操作:sessRead()

      誰調用,誰傳參!

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

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

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

    寫操作:sessWrite()

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

    需要2個形參來接收:

    測試:

    刪除操作:sessDelete()

    銷毀session時。

    執行了html' target='_blank'>PHP函數

    Session_destroy();

    可以銷毀session,刪除對應的session數據區,同時關閉session機制!

    由于需要刪除session數據區,需要增加用于刪除的方法:

    PHP的session機制,在調用sessDelete時,會傳遞 當前session-ID作為參數:

    需要定義形參來接收:

    垃圾回收操作:sessGC()

      垃圾:服務器上過時的session數據區。、

    垃圾如何判定?

      如果一個session數據區已經超過多久沒有使用(最后一次寫操作)了,就是被視為垃圾數據。

    該時間臨界點:默認1440s。可以被配置:

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

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

      寫入時,更新該字段:

    sessWrite();

    判斷條件:過期

    Last_write < 當前時間-1440

    如何刪除?

      在 session_start()過程中,開啟session機制過程中:有幾率地執行 垃圾回收操作。一旦執行,就會刪除所有的過期的垃圾數據區。

    默認的概率為1/1000。

    可以設置該幾率:

    可能性:

    基數(除數):

    調整幾率測試:

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

    實現 sessGC()

    PHP的session機制將 最大有效期作為參數,傳遞過來!

    開始操作sessBegin():

    初始化工作

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

    例如初始化數據庫連接:

    結尾操作sessEnd():

    收尾性工作

    Return true;

    語法細節先設置在開啟session機制

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

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

    PHP配置項:session.save_handler

    PHP所使用的存儲機制:

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

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 辉县市| 专栏| 托克托县| 菏泽市| 济宁市| 安乡县| 亳州市| 永年县| 左贡县| 辽阳市| 富宁县| 林西县| 黔江区| 建宁县| 乌苏市| 乐亭县| 永修县| 靖西县| 思南县| 龙川县| 井冈山市| 迁西县| 铅山县| 鹰潭市| 彩票| 隆昌县| 内丘县| 遂宁市| 乐亭县| 木里| 容城县| 宁德市| 民县| 石渠县| 丘北县| 徐州市| 五原县| 岳西县| 禄劝| 亳州市| 彭泽县|