成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于php session gc回收的問(wèn)題

codecook / 2549人閱讀

摘要:昨天下午糾結(jié),想做一個(gè)秒就自動(dòng)清除的會(huì)話。注下環(huán)境首先自定義關(guān)于的三個(gè)簡(jiǎn)單文件讀寫(xiě)回收寫(xiě)入讀取和觸發(fā)按照官方說(shuō)必須觸發(fā)才能開(kāi)始回收那么問(wèn)題來(lái)了,用瀏覽器一次訪問(wèn),,,然后秒中之后,再次訪問(wèn)。會(huì)話結(jié)束時(shí)調(diào)用此外,會(huì)不時(shí)地調(diào)用回調(diào)函數(shù)。

昨天下午糾結(jié),想做一個(gè)10秒就自動(dòng)清除的會(huì)話。
雖然后來(lái)采用了session+timestamp的方法,但是gc的回收機(jī)制卻困擾了我。

根據(jù)說(shuō)明,session的gc是根據(jù)以下三個(gè)參數(shù)。
session_start()是session機(jī)制的開(kāi)始,它有一定概率開(kāi)啟垃圾回收

 "session.gc_maxlifetime:". ini_get("session.gc_maxlifetime")."
"; "session.gc_probability:". ini_get("session.gc_probability")."
"; "session.gc_divisor:". ini_get("session.gc_divisor")."
";

于是我把maxlifetime設(shè)置為10,probability 和divisor同時(shí)設(shè)置為1.
天真的以為10秒后會(huì)自動(dòng)刪除。
(注:win下phpstudy環(huán)境)

首先自定義關(guān)于php session的三個(gè)簡(jiǎn)單文件
read.php 讀
write 寫(xiě)
gc 回收

1、寫(xiě)入session

";
    echo "session.gc_probability:". ini_get("session.gc_probability")."
"; echo "session.gc_divisor:". ini_get("session.gc_divisor")."
"; echo "session-id:".session_id()."
"; echo "session-name:".session_name()."
"; echo "
"; echo "write success in ".date("Y-m-d H:i:s",time()); session_write_close();

2、讀取session和cookie

";
    echo "session.gc_probability:". ini_get("session.gc_probability")."
"; echo "session.gc_divisor:". ini_get("session.gc_divisor")."
"; echo "
"."Session::=>"; var_dump($_SESSION); echo "
"."Cookie::=>"; var_dump($_COOKIE); echo "
"; echo "
ReadTime".date("Y-m-d H:i:s",time());

3、觸發(fā)session_start ,(按照官方說(shuō)必須觸發(fā)start才能開(kāi)始gc回收)


那么問(wèn)題來(lái)了,用瀏覽器1一次訪問(wèn) write,read,gc,然后10秒中之后,再次訪問(wèn)read。那個(gè)sessionid還是在那里一動(dòng)不動(dòng)。
后來(lái)?yè)Q了本機(jī)其他瀏覽器(瀏覽器2),原來(lái)的sessionid就被清除掉了
。但是有個(gè)問(wèn)題,即使我把回收站直接刪除,在用瀏覽器1訪問(wèn),sessionid的名字仍然是刪除的那個(gè)。不知道他把這個(gè)sessionid到底存放在哪里。這些貌似不是大問(wèn)題,因?yàn)橐话憔W(wǎng)站觸發(fā)其他的請(qǐng)求后,那么gc回收就起效了。
但是這種放在文件中存儲(chǔ)session,如果遇到百萬(wàn)或者千萬(wàn)訪問(wèn),gc要開(kāi)啟100%,他會(huì)依次比較當(dāng)前時(shí)間減去mtime的差額,然后與maxlifetime設(shè)置的時(shí)間做對(duì)比。這樣內(nèi)存開(kāi)銷還是很大的。

so,那我們只能借助session_set_save_handler() 函數(shù)來(lái)設(shè)置自定義會(huì)話保存管理器。
大概流程是這樣:
open:會(huì)話開(kāi)始,調(diào)用open管理器
read:讀取已經(jīng)編碼過(guò)的字符串
write:解碼字符串,產(chǎn)生數(shù)組對(duì)象,放在$_SESSION全局?jǐn)?shù)組變量,然后將session_id 一 起返回,調(diào)用close。
destory:會(huì)話結(jié)束時(shí)調(diào)用
此外,PHP 會(huì)不時(shí)地調(diào)用 gc 回調(diào)函數(shù)。 該函數(shù)會(huì)從持久化存儲(chǔ)中刪除超時(shí)的會(huì)話數(shù)據(jù)。
就是設(shè)置的maxlifetime值。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21026.html

相關(guān)文章

  • 關(guān)于 PHPSession 幾個(gè)問(wèn)題

    摘要:主要被用于保存某個(gè)訪問(wèn)者的數(shù)據(jù)。服務(wù)器給訪問(wèn)者唯一的鑰匙,這個(gè)鑰匙被稱作。例如官方給出的方案對(duì)于大量使用或者并發(fā)請(qǐng)求的網(wǎng)站而言,這可能是一個(gè)嚴(yán)重的問(wèn)題。例如意味著在每個(gè)請(qǐng)求中有的概率啟動(dòng)進(jìn)程。因此對(duì)于不能跟蹤的文件系統(tǒng)也沒(méi)問(wèn)題了。 什么是 Session 在 web 應(yīng)用開(kāi)發(fā)中,Session 被稱為會(huì)話。主要被用于保存某個(gè)訪問(wèn)者的數(shù)據(jù)。 由于 HTTP 無(wú)狀態(tài)的特點(diǎn),服務(wù)端是不會(huì)記...

    CoyPan 評(píng)論0 收藏0
  • session和cookie

    摘要:的作用就是為了解決協(xié)議無(wú)狀態(tài)的缺陷所作的努力。的內(nèi)容主要包括名字,值,過(guò)期時(shí)間,路徑和域。這種生命期為瀏覽器會(huì)話期的被稱為會(huì)話。而機(jī)制采用的是一種在服務(wù)器端保持狀態(tài)的解決方案。中的有效期默認(rèn)分鐘,也就是說(shuō),客戶端超過(guò)分鐘,當(dāng)前就會(huì)失效。 會(huì)話控制是什么? cookie和session都是跟蹤整個(gè)會(huì)話過(guò)程的技術(shù)手段。而會(huì)話,就是用戶通過(guò)瀏覽器和服務(wù)器的一次通話。 為什么要有會(huì)話控制? 因...

    ruicbAndroid 評(píng)論0 收藏0
  • phpsession相關(guān)設(shè)置描述

    摘要:一下大多是網(wǎng)上的資料,自己只是整理了下,如果有錯(cuò)誤希望能指出,感謝中的相關(guān)配置先看下中的相關(guān)配置的解釋。啟用此設(shè)定可以防止有關(guān)通過(guò)傳遞會(huì)話的攻擊。值為表示直到關(guān)閉瀏覽器。例如意味著在每個(gè)請(qǐng)求中有的概率啟動(dòng)進(jìn)程。 對(duì)于session的了解,之前一直沒(méi)有仔細(xì)研究過(guò),最近遇到了一些問(wèn)題,需要解決session配置問(wèn)題,就順便查看了些資料。一下大多是網(wǎng)上的資料,自己只是整理了下,如果有錯(cuò)誤希望...

    jsdt 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<