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

首頁(yè) > 語(yǔ)言 > PHP > 正文

php session的生存周期詳解示例

2024-07-16 17:45:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

首先說(shuō)一下session的創(chuàng)建的開始到結(jié)束的過(guò)程。
當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè) session 的時(shí)候,服務(wù)器首先會(huì)檢查這個(gè)客戶端是否已經(jīng)包含了一個(gè) session 標(biāo)識(shí),這個(gè)我們稱為 session id(獲取方法為 session_id() ),如果已包含一個(gè) session id 則說(shuō)明此客戶端之前已經(jīng)創(chuàng)建過(guò) session,服務(wù)器則按照 session id 把這個(gè) session 中的值檢索出來(lái),如果客戶端不包含 session id,說(shuō)明此客戶端第一次請(qǐng)求服務(wù)器或手動(dòng)清除過(guò)緩存文件,則為此客戶端創(chuàng)建一個(gè) session 并且生成一個(gè)與此 session 相關(guān)聯(lián)的 session id,一般來(lái)說(shuō),session id 的值是不會(huì)重復(fù)的,并且加密的字符串,這個(gè) session id 將被在本次響應(yīng)中返回給客戶端保存。
session 在何時(shí)被創(chuàng)建 ?
通常(是指通常)是在瀏覽器向服務(wù)器端第一次請(qǐng)求時(shí)被創(chuàng)建,并且它會(huì)占用一定的內(nèi)存空間,因此在不必要的情況下,盡最關(guān)閉 session 。
session 何時(shí)被刪除 ?
通常情況下,session 在會(huì)在這幾種情況下被刪除:
一是使用 session_destroy() 重置函數(shù)手動(dòng)刪除;
二是 session 的上次活動(dòng)時(shí)間距離當(dāng)前時(shí)間的間隔超過(guò)了 session 的超時(shí)設(shè)置的時(shí)間;三是服務(wù)器進(jìn)程被停止。
怎么在瀏覽器關(guān)閉時(shí)刪除 session ?
理論上來(lái)說(shuō),是做不到這一點(diǎn),http是一種無(wú)狀態(tài)協(xié)議,因此服務(wù)器不知道客戶端什么時(shí)候關(guān)掉的瀏覽器,并且PHP也沒(méi)有一個(gè)關(guān)相的函數(shù)來(lái)獲取此項(xiàng)信息,但這個(gè)問(wèn)題還可以得到解決,就是使用 網(wǎng)頁(yè)特效 代碼 window.oncolose 來(lái)監(jiān)視瀏覽器的關(guān)閉動(dòng)作,然后用Ajax向服務(wù)器端發(fā)送一個(gè)請(qǐng)求來(lái)刪除 session ,但這個(gè)辦法也并不會(huì)完全解決問(wèn)題,原因是在有些情況下比如瀏覽器崩潰、突然斷電、用戶死機(jī)等這些時(shí)候并不能作出反應(yīng)。
如何設(shè)置使session在一段時(shí)間過(guò)后自動(dòng)失效(刪除)?
session_start()是session機(jī)制的開始,它有一定概率開啟垃圾回收,因?yàn)閟ession是存放在文件中,PHP自身的垃圾回收是無(wú)效的,SESSION的回收(刪除)是要?jiǎng)h文件的,這個(gè)概率是根據(jù)php.ini的配置決定的,但是有的系統(tǒng)是 session.gc_probability = 0,這也就是說(shuō)概率是0,而是通過(guò)cron腳本來(lái)實(shí)現(xiàn)垃圾回收(即刪除session)。
PHP中的session有效期默認(rèn)是1440秒(24分鐘,注:php5里默認(rèn)的是180分】,也就是說(shuō),客戶端超過(guò)24分鐘沒(méi)有刷新,當(dāng)前session就會(huì)失效。很明顯,這是不能滿足需要的。
一個(gè)已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存儲(chǔ)到數(shù)據(jù)庫(kù),這樣可以通過(guò)SQL語(yǔ)句來(lái)刪除所有過(guò)期的session,精確地控制session的有效期。這也是基于PHP的大型網(wǎng)站常用的方法。但是,一般的小型網(wǎng)站,似乎沒(méi)有必要這么勞師動(dòng)眾。
但是一般的Session的生命期有限,如果用戶關(guān)閉了瀏覽器,就不能保存Session的變量了!那么怎么樣可以實(shí)現(xiàn)Session的永久生命期呢?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗山县| 若羌县| 陇南市| 汨罗市| 桐庐县| 兰溪市| 蒲江县| 开封县| 阳谷县| 浦东新区| 巴林左旗| 五常市| 泽库县| 谷城县| 吴川市| 同仁县| 临沭县| 泰州市| 深泽县| 楚雄市| 治县。| 延寿县| 柘城县| 伊金霍洛旗| 西乌珠穆沁旗| 措美县| 普陀区| 平武县| 堆龙德庆县| 蒙城县| 苍溪县| 肇庆市| 阳谷县| 三明市| 灵石县| 墨竹工卡县| 澄城县| 乌兰浩特市| 名山县| 凤城市| 阳泉市|