欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

Session Manager by Redis

程序员文章站 2022-05-04 10:36:18
...

SessionManager.php

<?php 
	/**
	* SessionManager
	*/
	class SessionManager
	{
		private $redis;
		private $sessionSavePath;
		private $sessionName;
		private $sessionExpireTime = 30;

		function __construct()
		{
			$this->redis = new Predis\client();
			$this->redis->connect('127.0.0.1', 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($patn, $name){
			return true;
		}

		public function close()
		{
			return true;
		}

		public function read($id)
		{
			$value = $this->redis->get($id);
			if ($value) {
				return $value;
			}else{
				return '';
			}
		}

		public function write($id, $data)
		{
			var_dump($id);
			if ($this->redis->set($id, $data)) {
				$this->redis->expire($id, $this->sessionExpireTime);
				return true;
			}
			return false;
		}

		public function destroy($id)
		{
			if ($this->redis->delete($id)) {
				return true;
			}
			return false;
		}

		public function gc($maxlifetime)
		{
			return true;
		}

		public function __destruct()
		{
			session_write_close();
		}
	}
 ?>

session_set.php

<?php 
	require '../Predis/src/Autoloader.php';

	Predis\Autoloader::register();

	include("SessionManager.php");
	new SessionManager();

	$_SESSION['username'] = "xugang";

	echo "<a href = './session_get.php'>session</a>";
 ?>

session_get.php

<?php 
	require '../Predis/src/Autoloader.php';

	Predis\Autoloader::register();

	include("SessionManager.php");
	new SessionManager();
	echo $_SESSION['username'];
 ?>
相关标签: php