PHP使用Redis替代文件存储Session的方法_php技巧_脚本

定义个SessionManager 类

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垃圾回收机制时触发

创建一个session_set.php 代码如下

session_set_save_handler 函数各参数作用如下表

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

本文实例讲述了PHP使用Redis替代文件存储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(); }}

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

创建一个session_set.php 代码如下

希望本文所述对大家PHP程序设计有所帮助。

测试输出 结果 xxdcsnd@sina.com

在write回调函数中,以session ID 作为key,把session的数据作为value存储到redis服务器,设置session的过期时间为30秒。在read 回调函中,以session ID 作为key从redis服务器中读取数据,并返回此数据。而在destroy回调函数重,则以session ID 作为key 从redis服务器中删除对应的session数据。

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

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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

描述

注意 :php.ini session.save-hadler 设置为 user ,否则session_set_save_handler 不会生效

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

本文由皇家赌场手机版发布于首页,转载请注明出处:PHP使用Redis替代文件存储Session的方法_php技巧_脚本

相关阅读