tp6用redis存储session

news2025/1/10 20:47:44

随着业务量的增加,很多时候会需要共享session的情况。共享session,其实就是说多台服务器共用一个session,或者是说一个主域跟多个子域之间共用一个session。工作中用tp也多一些,那么,我就用tp6来给大家讲解一下。
在共享session,我们需要用到redis。这儿我假设大家都能读懂redis,并且也能安装和配置。
1、在 config 目录下的 cache.php 文件中,修改为如下代码

<?php

// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------

return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'session'), //小冰 (这儿改为 session)

    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // 更多的缓存连接
        //小冰 主要的在这儿,其实这个就是redis的配置
        'session' => [
            // 缓存主机
            'host'       => '127.0.0.1',
            // 缓存端口
            'port'     => '6379',
            // 缓存密码
            'password'     => '',
            // 缓存数据库
            'select'   => '10',
            // 缓存有效期 0表示永久缓存
            'timeout'   => 0,
            // 缓存前缀
            'prefix'   => '',
            'type'      =>  'redis'
        ],
    ],
     
     //当然,这儿也还可以再写其他的缓存配置
];

2、修改session.php的配置文件 (在 config 目录下的 session.php 文件中)

<?php
// +----------------------------------------------------------------------
// | 会话设置
// +----------------------------------------------------------------------

return [
    // session name
    'name'           => 'PHPSESSID',
    // SESSION_ID的提交变量,解决flash上传跨域
    'var_session_id' => '',
    // 驱动方式 支持file cache
    'type'           => 'cache', //小冰 记住这儿为cache
    // 存储连接标识 当type使用cache的时候有效
    'store'          => 'session', //小冰这儿填写session
    // 过期时间
    'expire'         => 1440,
    // 前缀
    'prefix'         => '',
];

到这儿,配置就已完成了。下面就是实际使用。

3、设置session的内容
在控制器中,我们首先需要引入session的类

<?php
    namespace app\controller;
    use app\BaseController;
    use think\facade\Session;
    use think\facade\Cache;
    
    class Test extends BaseController{
        private $sessionRedis;
        
        public function __construct(){
        	//new \think\cache\driver\Redis(config('cache.stores.session')) 表示引入redis类
            $this->sessionRedis = new \think\cache\driver\Redis(config('cache.stores.session')); //引入redis类
        }
        
        public function testSession(){
            session('key' , 'xiaoming');
        }
        
  
        public function getSessionRedis(){
            $session_id = Session::getId(); //获取sessionid
            $n = $this->sessionRedis->get($session_id);
             var_dump($n);
        }
    }

?>

当然,如果要实现多个子域之间共享session,那么就需要做一些小小的配置。(所谓子域共享,就是 www.xyz.com 跟 abc.xyz.com)是同一个主域
(1) 在php.ini中,做如下配置

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379" #不带密码
#session.save_path = "tcp://127.0.0.1:6379?auth=youpwd″ #带密码的
session.cookie_domain = tp6.bnc  #把它设置成你的主域即可,设置之后别忘了重启服务
#参考 https://blog.csdn.net/qq_31659985/article/details/97948365?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-97948365-blog-116473625.235^v38^pc_relevant_sort_base2&spm=1001.2101.3001.4242.2&utm_relevant_index=4

#当然,如果你用的是宝塔,那就直接在宝塔上设置。

(2) 在你的php项目中,设置 session 和 cookie 的顶域为主域名。(以tp6 为例)

<?php
	return [
	    // session name
	    'name'           => 'PHPSESSID',
	    // SESSION_ID的提交变量,解决flash上传跨域
	    'var_session_id' => '',
	    // 驱动方式 支持file cache
	    'type'           => 'cache',
	    // 存储连接标识 当type使用cache的时候有效
	    'store'          => 'session',
	    // 过期时间
	    'expire'         => 1440,
	    'domain'         => 'tp6.bnc',
	    // 前缀
	    'prefix'         => '',
	];
?>

在这里插入图片描述
在这里插入图片描述

<?php
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
return [
    // cookie 保存时间
    'expire'    => 0,
    // cookie 保存路径
    'path'      => '/',
    // cookie 有效域名
    'domain'    => 'tp6.bnc',
    //  cookie 启用安全传输
    'secure'    => false,
    // httponly设置
    'httponly'  => false,
    // 是否使用 setcookie
    'setcookie' => true,
    // samesite 设置,支持 'strict' 'lax'
    'samesite'  => '',
];

经过上面的配置和修改,我们之后存session就能在主域和子域之间共享了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm显示python文件的函数和类的列表 structure视图的使用与介绍

目录 打开structure视图structure视图的使用与介绍1.排序方式按字母升序or降序排列2. 是否显示有关联的函数和类&#xff08;一般不用激活&#xff09;3. 展示类中的字段4. 点击后是否定位到目标5. 自动定位到当前文件 总结 欢迎关注 『Python』 系列&#xff0c;持续更新中 欢…

redolog与binlog为什么需要两阶段提交?

MySQL事务提交的时候&#xff0c;需要同时完成redo log和binlog的提交&#xff0c;为了保证两个日志的一致性&#xff0c;需要用到两阶段提交&#xff08;与分布式的两阶段提交不同&#xff0c;这里的两阶段提交是发生在数据库内部&#xff09; 数据库两阶段提交的流程 假设执行…

【P59】JMeter 用表格查看结果(View Results in Table)

文章目录 一、用表格查看结果&#xff08;View Results in Table&#xff09;参数说明二、准备工作三、测试计划设计 一、用表格查看结果&#xff08;View Results in Table&#xff09;参数说明 可以将取样器请求以表格的方式分析展示 使用场景&#xff1a;一般在调试测试计…

深入理解相机服务层 CameraService

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、简介二、Camera AIDL 接口三、Camera Service 主程序 一、简介 Camera Service被设计成一个独立进程&#xff0c;作为一个服务端&#xff0c;处理来…

LIMS实验室信息管理系统源码 lims系统源码

一、LIMS概况 LIMS实验室管理系统是为实验、检测等业务板块提供流程化、模块化、标准化操作管理系统&#xff0c;打造基于行业法规的实验室全流程质量控制管理系统&#xff0c;实现实验室“人、机、料、法、环”关键环节管理。 二、技术框架说明 开发语言&#xff1a;C# 开…

是否需要更换CRM系统如何评估?如何确保更换成功?

很多企业在使用CRM客户管理系统的过程中&#xff0c;并没有达到预期的效果&#xff0c;甚至出现了实施失败的情况。部分企业可能会考虑更换CRM系统&#xff0c;以期获得更好的结果。但是&#xff0c;更换CRM系统是否值得呢&#xff1f;下面我们就来说说。 一、是否该更换CRM …

电容笔和触控笔两者的区别是什么?好用苹果电容笔推荐

如今&#xff0c;随着无纸化教育的兴起&#xff0c;电容笔也成为了人们关注的焦点。很多人对于电容笔和触控笔的区别很疑惑&#xff0c;其实&#xff0c;这两者是很好区分的&#xff0c;电容笔只能应用在我们最常用的电容屏上&#xff0c;例如我们的平板、手机屏幕等都是电容屏…

Redis 消息队列 Stream

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 &#x1f495;&#x1f495; 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#…

电脑技巧:Windows微信3.9.5更新一览

目录 01、新增锁定功能 02、可直接撤回正在发送的消息 03、翻译多个网页 04、搜一搜新增历史记录 05、视频号页面再次优化 近期&#xff0c;Windows微信又更新至3.9.5版本&#xff0c;新增了许多实用的功能&#xff0c;以下将对这些新功能进行介绍。 官方更新内容&#x…

mybatis-plus用法(一)

MyBatis-plus 是一款 Mybatis 增强工具&#xff0c;用于简化开发&#xff0c;提高效率。下文使用缩写 mp来简化表示 MyBatis-plus&#xff0c;本文主要介绍 mp 整合 Spring Boot 的使用。 (5条消息) mybatis-plus用法&#xff08;二&#xff09;_渣娃工程师的博客-CSDN博客 1…

【K哥爬虫普法】一个人、一年半、挣了2000万!

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

2023免费版电脑视频剪辑软件会声会影

提到视频剪辑软件&#xff0c;浮现在我们脑海的可能就是满屏的功能键和眼花缭乱的操作界面。类似pr、AE之类的视频软件&#xff0c;操作界面看起来十分复杂&#xff0c;很多用户上手困难。而会声会影界面简单&#xff0c;功能齐全&#xff0c;也能完成专业级的视频制作。操作简…

基于SSM+JSP的疫情居家办公OA系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

springboot+vue.js大学生竞赛报名作品评分管理系统

本文介绍了大学生竞赛管理系统的开发全过程。通过分析大学生竞赛管理系统管理的不足&#xff0c;创建了一个计算机管理大学生竞赛管理系统的方案。文章介绍了大学生竞赛管理系统的系统分析部分&#xff0c;包括可行性分析等&#xff0c;系统设计部分主要介绍了系统功能设计和数…

Get请求如何传递数组、对象

文章目录 Get请求如何传递数组1、将数组参数传递多次2、直接将数组指用逗号分隔 Get请求如何传递对象 Get请求如何传递数组 1、将数组参数传递多次 可以将数组参数传递多次&#xff0c;springmvc会将多个同名参数自动封装成数组或者集合对象&#xff0c;示例如下&#xff1a;…

JavaScript库:jQuery,简化编程

1. jQuery介绍 官方网站 : https://jquery.com jQuery 是一个 JavaScript 库 。极大地简化了 JavaScript 编程&#xff0c;例如 JS 原生代码几十行 实现的功 能&#xff0c; jQuery 可能一两行就可以实现&#xff0c;因此得到前端程序猿广泛应用。 发展至今&#xff0…

chatgpt赋能python:Python如何保存数据到CSV文件中

Python如何保存数据到CSV文件中 作为一门广泛应用于数据分析和机器学习的编程语言&#xff0c;Python提供了许多方法来处理和保存数据。其中之一是将数据保存到CSV文件中。本篇文章将介绍如何使用Python保存数据到CSV文件&#xff0c;在此过程中&#xff0c;我们会提到一些有用…

【保姆级】如何创建一个Vue工程

如何创建一个Vue工程 文章目录 如何创建一个Vue工程1、下载安装Node.js2、配置环境变量3、npm 安装淘宝镜像4、安装Vue CliVue 安装失败原因 5、在线创建工程创建工程启动服务启动报错停止服务重启服务 1、下载安装Node.js Node.js是一个js运行环境&#xff0c;Vue工程需要建立…

端午节特别活动 | 在 Python 中制作端午节游戏

端午节将至&#xff0c;为了丰富人们的节日生活&#xff0c;CSDN为大家带来了特别的端午礼包。作为一名程序员&#xff0c;我们又该如何在节日中发挥自己的特长呢&#xff1f;在本篇文章中&#xff0c;我们将使用 Python 制作一个端午节相关的小游戏&#xff0c;让大家在游戏中…

mac m1/m2 芯片安装 ps 2023 插件无法显示扩展界面

碎碎念&#xff1a;一直在踩坑的路上&#xff0c;甚至想休息时间玩一会儿 ps 都能踩坑 问题描述 新的 m2 芯片 mac 安装了色环插件后&#xff0c;在窗口界面中没有找到扩展&#xff0c;且在首选项->增效工具的旧版扩展也是灰色的 题外话&#xff1a;记录一下 mac 的 photo…