redis 替代php文件存储session的实例

2020-03-25 01:56 来源:未知

redis 替代php文件存储session的实例

本文实例讲述了PHP使用Redis替代文件存储Session的方法。分享给大家供大家参考,具体如下:

查看实例之前请先了解 PHP session_set_save_handler函数的用法

PHP默认使用文件存储session,如果并发量大,效率非常低。而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session。

定义个SessionManager 类

这里,介绍下php的session_set_save_handler函数的作用和使用方法。该函数定义用户级session保存函数。

class SessionManager { private $redis; public function __construct(){ $this-redis = new Redis(); $this-redis-connect('192.168.0.102', 6379); $retval =session_set_save_handler( array($this,"open"), array($this,"close"), array($this,"read"), array($this,"write"), array($this,"destroy"), array($this,"gc") ); session_start(); } public function open($path,$name){ return true; } public function close(){ return true; } public function read($id){ $session_value = $this-redis-get($id); if($session_value){ return $session_value; }else{ return ""; } } public function write($id,$data){ if($this-redis-set($id,$data)){ return true; }else{ return false; } } public function destroy($id){ if($this-redis-delete($id)){ return true; }else{ return false; } } public function gc($maxlifetime){ return true; } public function __destruct(){ session_write_close(); }}

bool session_set_save_hanler(callback open,callback close,callback read,callback write,callback destory,callback gc)

创建一个session_set.php 代码如下

session_set_save_handler 函数各参数作用如下表

include("SessionManager.php");new SessionManager();$_SESSION['user_name']="xxdcsnd@sina.com";

参 数

创建一个session_set.php 代码如下

描述

include("SessionManager.php");new SessionManager();echo $_SESSION['user_name'];

open 当session打开时调用此函数。接收两个参数,第一个参数是保持session的路径,第二个参数是session的名字 close 当session操作完成时调用此函数。不接收参数。 read 以session ID作为参数。通过session ID从数据存储方中取得数据,并返回此数据。如果数据为空,可以返回一个空字符串。此函数在调用session_start前被触发 write 当数据存储时调用。有两个参数,一个是session ID,另外一个是session的数据 destroy 当调用session_destroy函数时触发destroy函数。只有一个参数 session ID gc 当php执行session垃圾回收机制时触发

测试输出 结果 xxdcsnd@sina.com

在使用该函数前,先把php.ini配置文件的session.save_handler选项设置为user,否则session_set_save_handle 不会生效。

TAG标签:
版权声明:本文由澳门新浦金网站发布于数据库,转载请注明出处:redis 替代php文件存储session的实例