关于Session
? ? ? ? 1、概念:在計算機專業術語中,Session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間以及如果需要的話,可能還有一定的操作空間。具體到Web中的Session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。
? ? ? ? 2、工作原理:
? ? ? ? ? ? ?(1)當一個session第一次被啟用時,一個唯一的標識被存儲于本地的cookie中。
? ? ? ? ? ? ?(2)首先使用session_start()函數,PHP從session倉庫中加載已經存儲的session變量。
? ? ? ? ? ? ?(3)當執行PHP腳本時,通過使用session_register()函數注冊session變量。
? ? ? ? ? ? ?(4)當PHP腳本執行結束時,未被銷毀的session變量會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網頁時可以加載使用。
? ? ? ? 3、特點:
? ? (1)不是線程安全的,應該避免多個線程共享同一個Session實例
? ? (2)Session實例是輕量級的,所謂輕量級:是指他的創建和刪除不需要消耗太多資源
? ? (3)Session對象內部有一個緩存,被稱為Hibernate第一緩存,他存放被當前工作單元中加載的對象,每個Session實例都有自己的緩存。
? ? ? ? 4、使用方法:Session 是 用于保持狀態的基于 web服務的方法。Session 允許通過將對象存儲在 Web服務器的內存中在整個用戶會話過程中保持任何對象,常用于執行以下操作:
? ? ? ? ? ? (1)存儲需要在整個用戶會話過程中保持其狀態的信息,例如登錄信息或用戶瀏覽 Web應用程序時需要的其它信息。
? ? ? ? ? ? (2)存儲只需要在頁重新加載過程中或按功能分組的一組頁之間保持其狀態的對象。
? ? ? ? ? ? (3)Session 的作用就是它在 Web服務器上保持用戶的狀態信息供在任何時間從任何頁訪問。因為瀏覽器不需要存儲任何這種信息,所以可以使用任何瀏覽器,即使是像 PDA 或手機這樣的瀏覽器設備。
? ? ? ? 5、工作流程:
? ? ? ? ? ? ?(1)客戶端訪問服務器,服務器調用request.getSession()方法,產生session對象,用于跟蹤用戶的狀態。
? ? ? ? ? ? ?(2)同時,給session對象分配一個唯一標識sessionId。為了管理session對象,以sessionId為鍵,以session對象為值,封裝成Map集合。
? ? ? ? ? ? ?(3)產生響應時,將sessionId以cookie方式發送給客戶端,存放在客戶端瀏覽器的緩存中。
? ? ? ? ? ? ?(4)當客戶端再次請求服務器,會將sessionId以cookie請求頭的方式發送給服務器,服務器得到sessionId后,從Map集合中,得到session對象,從而跟蹤狀態。
? ? ? ? 6、session周期:開始:建立鏈接,服務器分配一個session id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 結束:Session 數據過期或者失效
? ? ? ? 7、與cookie的異同:
? ? ? ? ? ? ? ? ? 相同點:(1)它們都是為了解決HTTP?無狀態特性帶來的問題解決方案
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)都需要存儲數據
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)都需要往服務器端發送數據
? ? ? ? ? ? ? ? ? 不同點:(1)session數據存儲在云端,而Cookie數據存儲在客戶端
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)各種瀏覽器對cookie的大小和總數都是有限制的,而session理論上大小和總數都是無限的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)因數據存儲在客戶端,因此當用戶執行諸如訪問惡意網站的操作時,數據可能泄露,而session數據相對安全
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)session機制的數據保存需要消耗服務器資源,特別是當網站處于大負載高并發的情況下會對服務器性能有較大的影響。因此,非必要數據建議不要放在session中
? ? ? ? ? 附關于session介紹的幾篇文章,網址如下:
? ? ? ? ? ? ?https://wenku.baidu.com/view/e19372ba960590c69ec376c3.html
? ? ? ? ? ? ?http://blog.csdn.net/Magic_miao/article/details/51871726
?
轉載于:https://www.cnblogs.com/fancy-dawning/p/8610842.html
總結
- 上一篇: shell基础:多命令顺序执行与管道符
- 下一篇: 关于WampServer一些配置修改