20150127--Session入库
?
和濤哥學習MVC三
目錄
和濤哥學習MVC三.......................................................................................................... 1
一、簡介.......................................................................................................................... 2
1、什么是session?.................................................................................................. 2
2、為什么需要會話控制技術?.................................................................................. 2
3、session原理圖...................................................................................................... 2
二、session入庫的實現.................................................................................................... 3
1、要使用到的知識點:............................................................................................ 3
2、代碼實現.............................................................................................................. 4
a)定義基本操作的6個函數.............................................................................. 4
b)更改session存取方式,并開啟session.......................................................... 4
c)session系統的gc垃圾回收機制..................................................................... 5
3、session入庫......................................................................................................... 6
a)在open方法中,鏈接數據庫......................................................................... 6
b)在close方法中,關閉鏈接資源..................................................................... 6
c)在read方法中,讀取sess_id信息,在read方法中,可以通過參數來調用系統中的session_id 7
d)在write方法中,實現對session數據庫的寫入操作........................................ 7
e)在destroy方法中,銷毀指定session_id的數據.............................................. 7
f)在gc方法中,判斷session數據是否過期....................................................... 7
三、整合session入庫到MVC項目中................................................................................ 8
1、設計數據庫如下圖所示......................................................................................... 8
2、在Core文件夾中創建Session.class.php做為核心入庫文件..................................... 9
3、創建Session類..................................................................................................... 9
4、創建session入庫的6個方法............................................................................... 10
5、繼承Model模型,鏈接數據庫,更改session存取方式........................................ 10
6、由于open與close不需要進行相關操作,可以為其設置默認返回值true.............. 10
7、read讀方法實現................................................................................................. 11
8、write寫方法實現................................................................................................ 11
9、destroy刪除方法實現......................................................................................... 11
10、gc垃圾回收方法實現........................................................................................ 11
11、在Core/Application.class.php中更改session存取機制......................................... 12
四、購物車實現.............................................................................................................. 12
1、采用數據庫方式存儲購物車................................................................................ 12
2、數據庫架構........................................................................................................ 12
product 產品表................................................................................................. 12
shopcar 購物車表............................................................................................. 13
order 訂單表................................................................................................. 13
一、簡介
1、什么是session?
答:一種會話控制技術
2、為什么需要會話控制技術?
1)早期互聯網采用HTTP協議發送請求,但由于HTTP是無狀態的請求,所以網站管理者無法獲知當前用戶的用戶軌跡。
2)Cookie技術
相當于超市的會員卡
3)Session技術
相當于超市發卡但是保留實體卡,只發給我們卡號(Session_ID)
3、session原理圖
由上圖可知,session操作主要是對session的增刪改查(session文件的讀取與寫入)操作,但是由于文件讀寫操作要實現對服務器的I/O進行開銷,如淘寶這種大數據系統,如果采用文本方式保存session數據,那么是無法想象的,另如想統計當前在線人數等信息,使用數據集群共享session數據時,都是很難實現的。
那么如何實現對以上問題的解決呢?
答:Session入庫技術
Session入庫技術實際就是人為更改session數據讀取與寫入的位置,如下圖所示:
二、session入庫的實現
1、要使用到的知識點:
bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc )
功能:實現對session讀取存取方式的函數
$open : 打開session讀寫操作
$close : 關閉session讀寫操作
$read : 讀取session文件(讀取數據庫中的session信息)
$write : 寫入session文件(寫入session信息到數據庫中)
$destroy : 銷毀session文件(刪除session信息)
$gc : 當session文件過期時,系統自動刪除該文件(刪除過期session記錄)
2、代碼實現
a)定義基本操作的6個函數
b)更改session存取方式,并開啟session
運行效果:
說明:當系統只有session_start()開啟函數時,系統會自動調用open、read、write、close四個函數,當系統中存在session_destroy函數時,系統將自動關閉session文件寫入功能,而出發系統中的destroy函數,如下圖所示:
代碼如下:
c)session系統的gc垃圾回收機制
php系統中,可以在php.ini配置文件中設置gc回收概率,默認系統回收概率1/1000
可以通過更改php.ini中的以下代碼,更改回收概率
更改php.ini配置信息,如下
運行效果,如下
以上方式人為更改系統gc垃圾回收概率,但是建議該概率的值為1/1000 ~ 1/5000
3、session入庫
a)在open方法中,鏈接數據庫
b)在close方法中,關閉鏈接資源
c)在read方法中,讀取sess_id信息,在read方法中,可以通過參數來調用系統中的session_id
d)在write方法中,實現對session數據庫的寫入操作
e)在destroy方法中,銷毀指定session_id的數據
f)在gc方法中,判斷session數據是否過期
可以通過php.ini中的以下參數進行判斷
默認session文件過期時間為24分鐘,1440秒
判斷session數據是否過期
運行效果如下:
posted on 2016-04-22 23:19?山山未遲 閱讀(...) 評論(...) 編輯 收藏
轉載于:https://www.cnblogs.com/lifushan/p/5423196.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的20150127--Session入库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博客园随笔
- 下一篇: Learning React Nativ