亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php實現Session存儲到Redis

2024-05-04 23:40:17
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php實現Session存儲到Redis的方法,php Session可以保存到文本或者內存、還有數據庫,本文講的是存到Redis的方法,

對于大訪問量的站點使用默認的Session 并不合適,我們可以將其存入數據庫、或者使用Redis KEY-VALUE數據存儲方案

首先新建一個session表

 

 
  1. CREATE TABLE `sessions` ( 
  2. `sid` char(40) NOT NULL, 
  3. `updatetime` int(20) NOT NULL, 
  4. `data` varchar(200) NOT NULL, 
  5. UNIQUE KEY `sid` (`sid`) USING HASH 
  6. ) ENGINE=MEMORY DEFAULT CHARSET=utf8; 

Mysql 的memory引擎采用內存表,所有數據存儲在內存,操作速度快

 

  1. <?php 
  2. //引入數據庫文件 
  3. include "db.php"
  4. class MySessionHandler implements SessionHandlerInterface 
  5. private $savePath; 
  6. private $sessData; 
  7. public $expiretime; //設置過期時間 
  8. public $db; //數據庫 
  9. public function __construct($hanlder =''){ 
  10.  
  11. $this->db = Database::getInstance();  
  12.  
  13. //獲取數據庫實力  
  14. ///var_dump($this->db); 
  15.  
  16.  
  17. public function open($savePath, $sessionName) 
  18.  
  19. return true
  20.  
  21. public function close() 
  22. return true
  23.  
  24. public function read($id) 
  25. {  
  26. $sql ="select * from sessions where sid ='$id'"
  27. $result = $this->db->execute($sql); 
  28. if(!empty($result)){ 
  29. return $this->sessData = $result; 
  30. //函數的參數 $id -> 當前會話ID 
  31. //數據DATA -> 序列化之后的字符串 
  32. public function write($id, $data) 
  33. // echo $id; 
  34. // echo $data; 
  35. $now = time(); 
  36. $newExp = $now+$this->expiretime; //總時間=當前時間 + 期限時間 
  37. $sql = "select * from sessions where sid ='$id'"
  38. $result = $this->db->getOne($sql); 
  39. //var_dump($result); 
  40. if($data==''||isset($data)){ 
  41. $data = $this->sessData; 
  42. if($result){ 
  43. //如果存在則更新 
  44. $sql ="update sessions set updatetime = '$newExp',data ='$data' where sid = '$id'"
  45. //echo $sql; 
  46. $update_data =$this->db->execute($sql); 
  47. if($update_data){ 
  48. return true
  49.  
  50. }else
  51. //不存在則生成生成 
  52. $sql = "insert into sessions(sid,updatetime,data) values('$id','$now','$data')"
  53. $insert_data = $this->db->execute($sql); 
  54. if($insert_data){ 
  55. return true
  56. return false
  57.  
  58. public function destroy($id) 
  59. //銷毀 
  60. $sql = "delete from sessions where sid="."$id"
  61. $destory = $this->db->execute($sql); 
  62. if($destory){ 
  63. return true
  64. }else
  65. return false
  66.  
  67. public function gc($sessMaxLifeTime) 
  68. $t = time(); 
  69. $sql ="delete from sessions where $t - 'updatetime'>${sessMaxLifeTime}"
  70. $data = $this->db->execute($this->tosql); 
  71. if($data){ 
  72. return true
  73. }else
  74. return false
  75. return true

實例化

此處 PHP 手冊可以有兩種方法

1,實現了SessionHandlerInterface借口的對象,自PHP5.4可以使用

2 ,直接使用 session_set_save_handler

 

 
  1. //判斷PHP版本 
  2. if(version_compare(PHP_VERSION,5.4)==1){ 
  3.  
  4. session_set_save_handler($handler, true); 
  5. session_start(); 
  6. }else{  
  7. ini_set('session.use_trans_sid',0); 
  8. ini_set('session.use_cookies',1); 
  9. ini_set('session.cookie_path','/'); 
  10. ini_set('session.save_handler','user'); 
  11. session_module_name('user'); 
  12. session_set_save_handler(array($session,"open"),array($session,"close"),array($session,"read"),array($session,"write"),array($session,"destory"),array($session,"gc")); 
  13. session_start();  
  14. $_SESSION['QQ']="QQ"
  15. echo $_SESSION['QQ']; 

數據庫代碼

 

 
  1. <?php  
  2. class Database{ 
  3. static $instance; 
  4. static $db; 
  5. static function getInstance(){  
  6. if(self::$instance){ 
  7. return self::$instance; 
  8. }else
  9. return new Database();  
  10. public function __construct(){ 
  11. self::$db = new PDO('mysql:host=localhost;dbname=session''root',''); 
  12.  
  13. public function getOne($sql){ 
  14. $rs =self::$db->query($sql); 
  15. @$rs->setFetchMode(PDO::FETCH_ASSOC);//返回關聯數組 
  16. $result = $rs -> fetch(); 
  17. return $result; 
  18. public function execute($sql){ 
  19.  
  20.  
  21. $rs = self::$db->exec($sql); 
  22. return $rs; 
  23.  
  24. }  
  25.  
  26.  
  27. }  
  28. //$data = Database::getInstance(); 
  29. //var_dump($data); 

使用REDIS 存儲SESSION

 

 
  1. <?php 
  2. class SessionManager{ 
  3. private $redis; 
  4. private $sessionSavePath; 
  5. private $sessionName; 
  6. private $sessionExpireTime = 30; 
  7. public function __construct(){ 
  8. $this->redis = new Redis(); 
  9. $this->redis->connect('127.0.0.1',6379); //連接redis 
  10. $retval = session_set_save_handler( 
  11. array($this,"open"), 
  12. array($this,"close"), 
  13. array($this,"read"), 
  14. array($this,"write"), 
  15. array($this,"destory"), 
  16. array($this,"gc"
  17. ); 
  18. session_start(); 
  19.  
  20. public function open($path,$name){ 
  21. return true
  22. public function close(){ 
  23. return true
  24. public function read($id){ 
  25. $value = $this->redis->get($id); 
  26. if($value){ 
  27. return $value; 
  28. }else
  29. return ""
  30. public function write($id,$data){ 
  31. if($this->redis->set($id,$data)){ 
  32. $this->redis->expire($id,$this->sessionExpireTime);  
  33. //設置過期時間 
  34. return true
  35. return false
  36. public function destory($id){ 
  37. if($this->redis->delete($id)){ 
  38. return true
  39. return false
  40. public function gc($maxlifetime){ 
  41. return true
  42. //析構函數 
  43. public function __destruct(){ 
  44. session_write_close(); 
  45.  
  46. }  
  47. $re = new SessionManager(); 
  48. $_SESSION['name'] = "qq"
  49. echo $_SESSION['name']; 

以上就是詳細的介紹了php實現Session存儲到Redis的方法,希望對大家的學習有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频国产精品免费视频在线| 欧美性生活大片免费观看网址| 国产有码一区二区| 美女久久久久久久| 亚洲综合在线播放| 日韩av三级在线观看| 国产精品专区第二| 日韩最新av在线| 亚洲网站在线观看| 国产suv精品一区二区三区88区| 国产精品欧美亚洲777777| 国产精品成熟老女人| 欧美专区福利在线| 欧美大肥婆大肥bbbbb| 欧美香蕉大胸在线视频观看| 日韩毛片中文字幕| 欧美一级电影在线| 一区二区三区高清国产| 国外色69视频在线观看| 国产精品视频一区二区高潮| 成人看片人aa| 欧美丰满少妇xxxx| 国产精品一区二区电影| 色综合91久久精品中文字幕| 亚洲国产精品成人va在线观看| 欧美黄色免费网站| 国产精品日韩在线观看| 欧美日韩国产一中文字不卡| 国产成人亚洲精品| 精品亚洲一区二区三区四区五区| 国产欧美日韩中文| 国产视频丨精品|在线观看| 久久在线观看视频| 国产午夜精品视频免费不卡69堂| 国产九九精品视频| 日韩中文字幕视频| 国产精品扒开腿做爽爽爽男男| 国产成人亚洲精品| 国产一区二区三区在线看| 97成人精品视频在线观看| 最新国产成人av网站网址麻豆| 亚洲欧美中文日韩在线| 日韩风俗一区 二区| 热久久99这里有精品| 国产精品久久久久久久久久久不卡| 久久视频在线直播| 国产精品日韩在线| 国产精品一区二区三区久久| 久久久久久亚洲精品不卡| 欧美在线视频一区二区| 亚洲欧美一区二区三区在线| 亚洲欧美日韩精品久久奇米色影视| 在线播放日韩精品| 久久久精品美女| 欧美人成在线视频| 一区二区三区国产在线观看| 91精品综合久久久久久五月天| 日韩精品久久久久久久玫瑰园| 91影院在线免费观看视频| 欧美成人四级hd版| 在线精品国产成人综合| 国产福利精品视频| 亚洲天堂av在线免费| 97视频在线观看免费| 欧美精品日韩三级| 国内精品久久久久久久久| 国产精品自产拍在线观| 97福利一区二区| 亚洲高清免费观看高清完整版| 国产精品av电影| 亚洲伊人一本大道中文字幕| 欧美日韩免费在线| 国产精品久久激情| 日韩精品在线电影| 久久久久久久999| 国产一区二区三区三区在线观看| 日韩亚洲欧美中文在线| 亚洲精品v欧美精品v日韩精品| 91久久国产精品91久久性色| 欧美激情按摩在线| 日韩高清电影免费观看完整| 一道本无吗dⅴd在线播放一区| 狠狠躁18三区二区一区| 亚洲片av在线| 欧美激情伊人电影| 91久久精品美女高潮| 国产精品久久久久一区二区| 日韩欧美成人免费视频| 国产主播精品在线| 欧美精品激情视频| 尤物tv国产一区| 欧美性黄网官网| 欧美日韩性视频| 68精品国产免费久久久久久婷婷| 日本一区二三区好的精华液| 久久男人资源视频| 亚洲欧美日韩高清| 97福利一区二区| 久久综合伊人77777| 91成人免费观看网站| 国产精品亚洲网站| 国产成人欧美在线观看| 97在线免费观看视频| 91精品久久久久久久久久| 欧美激情精品久久久久久大尺度| 亚洲爱爱爱爱爱| 欧美精品videosex性欧美| 中文字幕亚洲欧美日韩高清| 亚洲在线视频福利| 欧美老女人性生活| 国产精品久久久久久久久久免费| 91精品国产自产在线观看永久| 久久av中文字幕| 久久久免费电影| 97久久精品人人澡人人爽缅北| 色婷婷av一区二区三区在线观看| 欧美精品18videos性欧美| 日韩精品电影网| 中文字幕亚洲图片| 亚洲第一网站免费视频| 色哟哟入口国产精品| 欧美做爰性生交视频| 久久精品国产精品亚洲| 亚洲精品乱码久久久久久按摩观| 国产精品白嫩美女在线观看| 国产乱肥老妇国产一区二| 国产精品99久久99久久久二8| 久久人人97超碰精品888| 久久人人看视频| 欧美激情在线一区| 中文字幕av一区中文字幕天堂| 国产精自产拍久久久久久| 亚洲国产日韩欧美在线99| 97视频网站入口| 欧美激情亚洲精品| 最近中文字幕mv在线一区二区三区四区| 欧美激情啊啊啊| 国产欧美一区二区三区久久人妖| 中文字幕精品一区久久久久| 黑人巨大精品欧美一区二区一视频| 亚洲在线观看视频网站| 色黄久久久久久| 操人视频在线观看欧美| 日本精品性网站在线观看| 青青草精品毛片| 日韩在线欧美在线国产在线| 日韩专区在线播放| 中文精品99久久国产香蕉| 亚洲国产成人精品久久| 欧美国产中文字幕| 91视频88av| 国产亚洲精品91在线| 国产美女扒开尿口久久久| www.亚洲人.com| 色综合久综合久久综合久鬼88| 九九热这里只有精品免费看| 久久国产精品免费视频| 亚洲第一国产精品| 精品国产电影一区| 国产网站欧美日韩免费精品在线观看| 亚洲欧美日韩成人| 国产性猛交xxxx免费看久久| www.欧美视频| 精品成人国产在线观看男人呻吟|