


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、本篇文章主要介紹了session加入redis的實例,對session進行了詳細介紹,并提供了代碼實例,需要的朋友可以參考下Session 信息入 redisSessi on 簡介sessi on,中文經(jīng)常翻譯為會話,其本來的含義是指有始有終的一系列動作/消息,比如打電話時從拿起電話撥號到掛斷電話這中間的一系列過程可以稱之為一個sessior。有時候我們可以看到這樣的話“在一個瀏覽器會話期間,”,這里的會話一詞用的就是其本義, 是指從一個瀏覽器窗口打開到關閉這個期間。最混亂的是“用戶(客戶端)在一次會話期間”這樣一句話,它可能指用戶的一系列動作(般情況下是同某個具體目的相關的一系列動作,比如從
2、登錄到選購商品到結賬登出這樣一個網(wǎng)上購物的過程,有時候也被稱為一個 transaction),然而有時候也可能僅僅是指一次連接,也有可能是指含義,其中的差別只能靠上下文來推斷。&n bsp;在本文中,使用中文“瀏覽器會話期間”來表達含義,使用“session機制”來表達含義,使用“ session”表達含義,使用具體的“HttpSession”來表達含義 為什么要把SESSION保存在緩存就php來說,語言本身支持的session是以文件的方式保存到磁盤文件中,保存在指定的文件夾中,保存的路徑可以在配置文件中設置或者在程序中使用函數(shù)session_save_path()進行設置,但是
3、這么做有弊端,第一就是保存到文件系統(tǒng)中,效率低,只要有用到session就會從好多個文件中查找指定的sessionid,效率很低。第二就是當用到多臺服務器的時候可能會出現(xiàn),session丟失問題(其實是保存在了其他服務器上)。當然了,保存在緩存中可以解決上面的問題,如果使用php本身的session函數(shù),可以使用session_set_save_handler()函數(shù)很方便的對 session的處理過程進行重新控制。如果不用 php的session系列函數(shù),可以自己編寫個類似的session函數(shù),也是可以的,我現(xiàn)在做的這個項目就是這樣,會根據(jù)用戶的mid、登錄時間進行求 hash作為sessi
4、onld,每次請求的時候都必須加上sessionld才算合法(第一次登錄的時候是不需要的,這個時候會創(chuàng)建sessionld, 返回給客戶 端),這么做也很方便、簡潔高效的。當然了,我這篇文章主要說的是在php自身的SESSION中”做做手腳”。SESSION保存在緩存中php將緩存保存到redis中,可以使用配置文件,對session的處理和保存做修改,當然了,在程序中使用in i_set()函數(shù)去修改也可以,這個很方便測試,我這里就使用這種方式, 當然了,要是生產(chǎn)環(huán)境還是建議使用配置文件。如果想簡單操作 session入redis操作可以將一下代碼運行一下:& lt;?php&n bsp;i
5、n i_set(sessi on. save_ha ndler, redis); &n bsp;in i_set(sessio n.save_path, tcp:/localhost:6379);&n bsp;sessi on _start( );&n bsp;header(C onten t-type:text/html;charset=utf-8);&n bsp;if(isset($_SESSIONview)&n bsp;&n bsp; $_SESSIONview = $_SESSIONview + 1;&n bsp;else&n bsp;&n bsp; $_SESSIONview = 1
6、;&n bsp;&n bsp;echo view 】$_SESSIONview; 這里設置 session.save_handler方式為 redis, session.save_path為 redis 的地址和端口, 設置之后刷新,再回頭查看redis,會發(fā)現(xiàn)redis中的生成了 sessionld, sessionld和瀏覽器請求的是一樣的,&n bsp;/也可以使用 Session_set_save_handler( open,close, read, write, destory, gc); /用法如下自定義一個Redis_session類&n bsp;&
7、 lt;?php&n bsp;class RedisSessi on&n bsp;&n bsp; private $_redis = array (&n bsp; handler => null, / 數(shù)據(jù)庫連接句柄 host => nuII, /redis端口號 &n bsp; &n bsp; port =& gt; n ull,&n bsp;&n bsp; ); &n bsp;&n bsp; public function _con struct($array = array()&n bs
8、p;&n bsp; &n bsp; isset($arrayhost)?$arrayhost:false;&n bsp;&n bsp; &n bsp; isset($arrayport)?$arrayhost:false;&n bsp;&n bsp; &n bsp; $this->_redis = array_merge($this->_redis, $array);&n bsp;&n bsp; &n bsp;&n bsp; public function begi n()&n bsp; / 設置 session 處理函數(shù) &n bsp; &n
9、 bsp; sessi on _set_save_ha ndler(&n bsp;&n bsp; &n bsp; &n bsp; array($this, ope n),&n bsp;&n bsp; &n bsp; &n bsp; array($this, close),&n bsp;&n bsp; &n bsp; &n bsp; array($this, read), &n bsp;&n bsp; &n bsp; &n bsp; array($this, write),&n bsp;&n bsp; &n bsp; &n bsp; array($this, destory),&n bsp;&n
10、 bsp; &n bsp; &n bsp; array($this, gc)&n bsp;&n bsp; &n bsp; ); &n bsp;&n bsp; &n bsp;&n bsp; public function ope n()&n bsp;&n bsp; &n bsp; $redis = new Redis(); &n bsp;&n bsp; &n bsp; $redis-& gt;co nn ect($this->_redishost, $this->_redisport); &n bsp;&n bsp; &n bsp; if(!$redis)&n bsp;&n bsp;
11、 &n bsp; &n bsp; retur n false;&n bsp;&n bsp; &n bsp; &n bsp;&n bsp; &n bsp; $this->_redisha ndle門=$redis ;&n bsp;&n bsp; &n bsp; $this->gc (n ull); &n bsp;&n bsp; &n bsp; return true;&n bsp;&n bsp; &n bsp;&n bsp; / 關 &n bsp;&n bsp; public function close()&n bsp;&n bsp; &n bsp; return $this-&g
12、t;_redisha ndle門->close();&n bsp;&n bsp; &n bsp;&n bsp; / 讀 &n bsp;&n bsp; public function read($sessi on _id)&n bsp;&n bsp; &n bsp; return $this->_redisha ndle門->get($sessi on _id);&n bsp;&n bsp; &n bsp;&n bsp; / 寫 &n bsp;&n bsp; public function write($sessi onld, $sessi on Data)&n bsp;&n
13、bsp; &n bsp; return $this->_redisha ndle門->set($sessi onld, $sessi on Data);&n bsp;&n bsp; &n bsp;&n bsp; public function destory($sessi onl d)&n bsp; return $this->_redishandle門->delete($sessionld)>= 1 ? true :false;&n bsp;&n bsp; &n bsp;&n bsp; public function gc()&n bsp; /獲取所有sessionid,讓過期的釋放掉 &n bsp; &n bsp; $this->_redisha ndle門->keys(*);&n bsp;&n bsp; &n bsp; return true;&n bsp;&n bsp; &n bsp;&n bsp;$ses = new Re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年四年級上學期語文教研組工作總結(5篇)
- 21 古詩三首 出塞教學設計-2024-2025學年四年級上冊語文統(tǒng)編版
- 人教版 (2019)選擇性必修2第1節(jié) 種群的數(shù)量特征教案設計
- 手術室護士個人試用期工作總結(4篇)
- 公司員工工作心得體會怎么寫(11篇)
- 全國電子工業(yè)版初中信息技術第四冊第2單元2.2活動3《模擬報警系統(tǒng)預警》教學設計
- 小學信息技術青島版五年級上冊第4課 幸運大轉盤教學設計
- 2025年餐飲部工作計劃范文(18篇)
- 義務量血壓活動總結(6篇)
- 2025-2026學年8 設計《西游記》人物教學設計
- 圖形與坐標復習(評學科帶頭人)
- 九年級上冊歷史知識點復習課件(部編版)
- 脫碳塔CO2脫氣塔設計計算
- 2022年四川省阿壩州中考物理真題及答案
- 香港匯豐銀行大廈結構選型
- 房屋硬裝裝修合同范本
- 2023年東莞市人民醫(yī)院醫(yī)師規(guī)范化培訓招生(放射科)考試參考題庫含答案
- 2022年甘肅省張掖市輔警協(xié)警筆試筆試模擬考試(含答案)
- 勾頭作業(yè)施工方案
- 中醫(yī)醫(yī)院重癥醫(yī)學科建設與管理指南
- 創(chuàng)傷性網(wǎng)胃炎
評論
0/150
提交評論