我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP session共享的解决方案有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP session共享的解决方案有哪些

今天小编给大家分享一下PHP session共享的解决方案有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

先了解一下为什么会出现这种session共享的解决方案?

随着互联网公司的项目在微服务和分布式的环境下进行的搭建,导致一个项目可能分别部署在几个甚至很多的服务器集群下,此时就会出现一个问题:

当用户进行一个session会话的时候,比如一个用户去登录项目,一般的大公司的项目都是有Nginx进行反向代理的,

这里简单列举一下Nginx常用的几种反向代理策略:

轮询策略,权重比例策略,ip_hash策略,还可以自定义的策略,

在Nginx的反向代理下,一般会把用户的请求分发到不同的服务器上,但是如果用户请求的请求是存放在该请求的服务器A上,那么该用户的sessionID就存储在该服务器上JVM的一个ConcurrentHashmap中,以sessionID为key。

但是如果此时用户请求的一个服务模块可能需要调用到服务器B,当用户发起请求的时候,此时的服务器B上并没有存储该用户的sessionID,所以就会再次让用户进行一个登陆操作。还有可能会导致用户本来就想完成一个下单操作,但是却还登陆了好几次的情况。

所以session共享方案在分布式环境和微服务系统下,显得尤其重要。

解决方案一:基于Nginx的ip_hash 负载均衡

其实就是对请求过来的ip地址对你的多少台可用的服务器进行取模,然后就会把你的请求通过Nginx的反向代理给分发到对应的服务器上。(这里会把可用的服务器放到一个数组中,如果取模得到的结果是几,就把请求分到服务器数组中的下标为几的服务器上)

具体实现:

需要你在Nginx.conf文件中进行对应的修改,根据自己的可用服务器

upstream backend{    ip_hash;    server 192.168.128.1:8080 ;    server 192.168.128.2:8080 ;    server 192.168.128.3:8080 down;    server 192.168.128.4:8080 down; }server {    listen 8081;    server_name test.csdn.net;    root /home/system/test.csdn.net/test;    location ^~ /Upload/upload {    proxy_pass http://backend;     } }

这种实现的优缺点:

PHP session共享的解决方案有哪些

解决方案二:基于Tomcat的session复制

这个解决方案其实就是当用户请求的时候,把产生的sessionID给复制到系统所有的服务器中,这样就能保证当用户请求的时候从服务器A可能调用到服务器B上的模块的时候,也能保证服务B也有该用户的sessionID,这样就不会再次让用户进行再次登录操作了。也就解决问题了。

具体代码中如何实现session复制呢?

PHP session共享的解决方案有哪些

使用session复制的优缺点:

PHP session共享的解决方案有哪些

解决方案三:使用Redis做缓存session的统一缓存

这种方案呢,其实就是把每次用户的请求的时候生成的sessionID给放到Redis的服务器上。然后在基于Redis的特性进行设置一个失效时间的机制,这样就能保证用户在我们设置的Redis中的session失效时间内,都不需要进行再次登录。

如何进行代码的实现:

PHP session共享的解决方案有哪些

使用Redis实现session共享的优缺点:

PHP session共享的解决方案有哪些

解决方案四:结合cookie

其实还可以把session放到cookie中去,因为每次用户请求的时候,都会把自己的cookie放到请求中,所以这样就能保证每次用户请求的时候都能保证用户在分布式环境下,也不会在进行二次登陆。

以上就是“PHP session共享的解决方案有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP session共享的解决方案有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP session共享的解决方案有哪些

今天小编给大家分享一下PHP session共享的解决方案有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先了解一下为什
2023-07-04

Redis解决Session共享问题的方法详解

企业项目中,一般都是将项目部署到多台服务器上,用nginx做负载均衡。这样可以减轻单台服务器的压力编程,不过这样也www.cppcns.com带来一些问题,例如之前单机部署的话,session存取都是直接了当的,因为请求就只到这一台服务器上
2022-07-11

win7找不到共享选项的解决方案

本文与您分享win7找不到共享选项解决方案,看到有很多关于windows7共享选项如何打开和相关服务相关教程,事实上,今天与您分享这个小教程只需要调整网络。当我们第一次选择网络位置时,很多人可能会随意选择网络状态。在Windows7系统中,
2023-07-10

解决 PHP Session 跨域问题的开源解决方案

引言:在开发网站和应用程序时,我们常常会遇到跨域问题。其中一个常见的问题是 PHP Session 在跨域情况下无法正常使用。本文将介绍一种开源解决方案,帮助开发者解决 PHP Session 跨域问题,并提供具体的代码示例。一、背景和问题
2023-10-21

php没有session返回的解决方法

这篇文章将为大家详细讲解有关php没有session返回的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php没有session返回的解决办法:1、将session_start放到标志
2023-06-22

php自动清除session的方法有哪些

这篇文章主要介绍“php自动清除session的方法有哪些”,在日常操作中,相信很多人在php自动清除session的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php自动清除session的方法
2023-07-05

PHP 函数常见的错误有哪些及解决方案

php 函数常见错误及其解决方案有:1. 函数定义错误(确保名称正确定义);2. 参数错误(传递参数与定义不匹配);3. 未声明函数(使用前声明);4. 返回类型错误(确保返回类型与定义一致);5. 嵌套过深(避免过度嵌套,分解复杂逻辑);
PHP 函数常见的错误有哪些及解决方案
2024-04-12

JavaScript异步解决方案有哪些

这篇文章主要介绍“JavaScript异步解决方案有哪些”,在日常操作中,相信很多人在JavaScript异步解决方案有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript异步解决方案有哪些
2023-07-05

云存储解决方案有哪些

1. 云存储服务商:像谷歌云存储、微软Azure等服务商提供的公共云存储解决方案。2. 私有云存储:组织可以在其自己的数据中心中创建私有云存储解决方案,这些解决方案可以根据组织的需求进行定制。3. 混合云存储:混合云存储是将公共和私有云存储
2023-06-08

私有云安全解决方案有哪些

1. 数据加密:对数据进行加密,保护数据的隐私和安全性。2. 访问控制:采用权限控制和身份验证机制,限制用户对数据的访问权限。3. 安全审计:对私有云环境中的所有操作进行监控和审计,及时发现和处理安全事件。4. 防火墙和入侵检测:使用防火墙
2023-06-08

Win10共享打印机沒有权限访问该怎么办Win10共享打印机沒有权限访问解决方案

Win10共享打印机沒有权限访问怎么解决?在Win10系统软件下应用打印机的小伙伴们,许多在操控的情况下都遇上了沒有权限访问的状况,因此大家给你给予了处理的方式,协助你们去处理权限的问题。下边小编为各位提供解决方案详细介绍!Win10共享打
2023-07-10

win7计算机连接共享打印机0x000011b的解决方案

我坚信,不少于客户在使用计算机时经常使用复印机。最近,许多消费者在连接共享打印机时遇到了0x00011b提醒,该打印机是通过应用公司的win7计算机连接的。让我们带你了解解决win7计算机连接共享打印机中的0x00011b问题的方法!方法1
2023-07-16

数据库安全解决方案有哪些

1. 访问控制:限制不同用户或角色的访问权限,确保只有授权用户才能访问敏感数据。2. 数据加密:使用加密技术对数据进行加密,确保即使数据被盗取也无法被解密。3. 数据备份与恢复:定期备份数据,以防止数据丢失或损坏,并确保能够快速恢复数据。4
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录