如何理解session
2015-11-04 21:01:51
16584
1.Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常指從注冊(cè)進(jìn)入系統(tǒng)到注銷退出系統(tǒng)之間所經(jīng)過的時(shí)間。以及如果需要的話,可能還有一定的操作空間。
2.具體到Web中的Session指的就是用戶在瀏覽某個(gè)網(wǎng)站時(shí),從進(jìn)入網(wǎng)站到關(guān)閉這個(gè)網(wǎng)站所經(jīng)過的這段時(shí)間,也就是用戶瀏覽這個(gè)網(wǎng)站所花費(fèi)的時(shí)間。因此從上述的定義中我們可以看到,Session實(shí)際上是一個(gè)特定的時(shí)間概念。
3.需要注意的是,一個(gè)Session的概念需要包括特定的客戶端,特定的服務(wù)器端以及不中斷的操作時(shí)間。A用戶和C服務(wù)器建立連接時(shí)所處的Session同B用戶和C服務(wù)器建立連接時(shí)所處的Session是兩個(gè)不同的Session。
session的工作原理
(1)當(dāng)一個(gè)session第一次被啟用時(shí),一個(gè)唯一的標(biāo)識(shí)被存儲(chǔ)于本地的cookie中。
(2)首先使用session_start()函數(shù),PHP從session倉(cāng)庫(kù)中加載已經(jīng)存儲(chǔ)的session變量。
(3)當(dāng)執(zhí)行PHP腳本時(shí),通過使用session_register()函數(shù)注冊(cè)session變量。
(4)當(dāng)PHP腳本執(zhí)行結(jié)束時(shí),未被銷毀的session變量會(huì)被自動(dòng)保存在本地一定路徑下的session庫(kù)中,這個(gè)路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網(wǎng)頁(yè)時(shí)可以加載使用。
4.其他的一些性質(zhì)
(1)html靜態(tài)資源因?yàn)椴粫?huì)被編譯,所以不涉及到session問題
(2)session被刪除的原因可以是一定時(shí)間內(nèi)服務(wù)器沒有收到該session所對(duì)應(yīng)的親求并且超出了服務(wù)器設(shè)置的session的最大時(shí)間,也可以是程序調(diào)用了HtmlSession.invalidate(),也可以是服務(wù)器關(guān)閉。
(3)session不會(huì)因?yàn)g覽器的關(guān)閉而刪除,只會(huì)通過以上方式刪除。
(4)session的創(chuàng)建和使用總在服務(wù)器端,而瀏覽器從來都沒有得到session對(duì)象。但瀏覽器可以通過請(qǐng)求servlet獲取session??蛻舳藘H僅拿到是session
ID并且是不可見的。