<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); const REDIS_HOST = 'localhost'; const REDIS_PORT = 6379; const REDIS_AUTH = '*****'; //========== session保存方式①:files ==========// // ini_set('session.save_handler', 'files'); // ini_set('session.save_path', __DIR__ . '/session_save'); //========== session保存方式②:redis ==========// ini_set('session.save_handler', 'redis'); ini_set('session.save_path', 'tcp://' . REDIS_HOST . ':' . REDIS_PORT . '?auth=' . REDIS_AUTH); // 重要提醒:这两处修改要在session_start()前执行。 session_name('MANONG_SESSIONID'); session_start(); $redis = new Redis(); $redis->connect(REDIS_HOST, REDIS_PORT); $redis->auth(REDIS_AUTH); echo '当前 session.save_handler = ' . ini_get('session.save_handler') . PHP_EOL; echo '当前 session.save_path = ' . ini_get('session.save_path') . PHP_EOL; $action = (string)($_GET['action'] ?? 'set'); //========== 设置session数据 ==========// if ($action === 'set') { $_SESSION['name'] = '张三'; $_SESSION['gender'] = '男'; $_SESSION['birth'] = 2003; $redis->close(); exit('SET OK'); } //========== 获取session数据 ==========// if ($action === 'get') { // 获取所有用户的session数据(注意:是所有用户,不仅仅是当前用户) $keys = $redis->keys('*'); foreach ($keys as $key) { $value = $redis->get($key); echo "【{$key}】 => 【{$value}】" . PHP_EOL; $my = 'PHPREDIS_SESSION:' . session_id(); if ($my === $key) { echo "俺的PHPREDIS_SESSION_KEY是:{$key},俺的数据是:{$value}。" . PHP_EOL; } } $name = $_SESSION['name'] ?? 'N/A'; $gender = $_SESSION['gender'] ?? 'N/A'; $birth = $_SESSION['birth'] ?? 'N/A'; echo "俺叫{$name}({$gender}),出生于{$birth}年。" . PHP_EOL; $redis->close(); exit; } // 当前 session.save_handler = redis // 当前 session.save_path = tcp://localhost:6379?auth=***** // 【PHPREDIS_SESSION:68ldtm634p9qnrlhjic2a2pil4】 => 【name|s:6:"张三";gender|s:3:"男";birth|i:2003;】 // 俺的PHPREDIS_SESSION_KEY是:PHPREDIS_SESSION:68ldtm634p9qnrlhjic2a2pil4,俺的数据是:name|s:6:"张三";gender|s:3:"男";birth|i:2003;。 // 俺叫张三(男),出生于2003年。 //========== 销毁session数据 ==========// if ($action === 'clr') { $_SESSION = []; session_destroy(); $redis->flushAll(); // 重要提醒:这里是删除Redis里所有用户的session数据,不仅仅是当前用户 $redis->close(); exit('CLEAR OK'); } // 测试地址 // -------------------------------------------------- // 销毁session数据:http://www.domain.com/test.php?action=clr // 设置session数据:http://www.domain.com/test.php?action=set // 获取session数据:http://www.domain.com/test.php?action=get
Copyright © 2024 码农人生. All Rights Reserved