PHP+redis实现session共享

释放双眼,带上耳机,听听看~!

前言

小型web服务, session数据基本是保存在本地(更多是本地磁盘文件), 但是当部署多台服务, 且需要共享session, 确保每个服务都能共享到同一份session数据.

redis 数据存储在内存中, 性能好, 配合持久化可确保数据完整.

设计方案

1. 通过php自身session配置实现

附加知识:

我们可以看到PHP默认的的session配置使用文件形式保存在服务器临时目录中。

PHP+redis实现session共享

这里选择把session存储在redis中。修改php.ini,把默认配置修改为


1
2
3
4
5
6
1# 使用 redis 作为存储方案
2session.save_handler = redis
3session.save_path = "tcp://127.0.0.1:6379"
4# 若设置了连接密码, 则使用如下
5session.save_path = "tcp://127.0.0.1:6379?auth=密码"
6

测试代码


1
2
3
4
5
6
7
8
9
10
11
12
1<?php
2ini_set("session.save_handler", "redis");
3ini_set("session.save_path", "tcp://127.0.0.1:6379");
4//以上的代码 若是在php.ini配置文件修改了,就没必要再需改了
5
6session_start();
7echo "<pre>";
8$_SESSION['usertest'.rand(1,5)]=1;
9var_dump($_SESSION);
10
11echo "</pre>";
12

输出结果


1
2
3
4
5
6
7
8
1array(2) {
2  ["usertest1"]=>
3  int(88)
4  ["usertest3"]=>
5  int(1)
6}
7usertest1|i:1;usertest3|i:1;
8

评价

  • 优点: 实现简单, 无需修改php代码
  • 缺点: 配置不支持多样化, 只能应用于简单场景

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全技术

使用Rust开发操作系统(GDT,IDT加载,以及GDB调试内核)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索