PHP實踐:分布式場景下的Session共享解決方案實現

在這里插入圖片描述

🏆作者簡介,黑夜開發者,全棧領域新星創作者?,CSDN博客專家,阿里云社區專家博主,2023年6月CSDN上海賽道top4。
🏆數年電商行業從業經驗,歷任核心研發工程師,項目技術負責人。
🏆本文已收錄于PHP專欄:PHP進階實戰教程。
🏆另有專欄PHP入門基礎教程,希望各位大佬多多支持??。
🎉歡迎 👍點贊?評論?收藏

文章目錄

  • 🚀一、前言
  • 🚀二、關于Session
  • 🚀三、多個服務器實現session共享的方式
    • 🔎3.1 數據庫存儲
    • 🔎3.2 文件存儲
    • 🔎3.3 緩存存儲
  • 🚀四、PHP將session存入到Redis中去
    • 🔎4.1 安裝和配置Redis服務器
    • 🔎4.2 安裝Redis擴展
    • 🔎4.3 配置PHP的Session存儲
    • 🔎4.4 使用Redis存儲Session
  • 🚀五、總結


🚀一、前言

SessionWeb開發中扮演著重要的角色,能夠記錄用戶狀態和行為。當應用運行在多個服務器上時,為了實現Session的共享,我們可以將Session數據存儲到共享的地方,如數據庫或緩存中。在分布式(多臺服務器)的情況下面,為了保持用戶登錄的連續性,有該如何操作呢,文本就針對于這個問題深入研究一下。

🚀二、關于Session

Web開發中,Session(會話)是一種記錄用戶狀態的機制。它利用了HTTP協議中的Cookie技術,在服務器端存儲用戶的相關信息,以便于下次用戶訪問時進行識別和使用。Session的作用非常重要,它可以用來記錄用戶的登陸狀態、購物車內容、瀏覽歷史等。下面是依賴于Session的工作流程圖。

在這里插入圖片描述

🚀三、多個服務器實現session共享的方式

當我們的應用運行在多個服務器上時,為了保證用戶在不同服務器間的會話狀態能夠共享,我們需要將Session數據存儲到一個可共享的地方,如數據庫或緩存中。下面是幾種實現Session共享的方式。

🔎3.1 數據庫存儲

將Session數據存儲到數據庫中,并通過Session ID來進行關聯。不同服務器之間共享同一個數據庫,通過讀取和寫入數據庫中的Session數據來實現共享。

在這里插入圖片描述

🔎3.2 文件存儲

將Session數據存儲到共享的文件系統中。不同服務器之間通過讀寫相同的文件來實現Session數據的共享。

🔎3.3 緩存存儲

將Session數據存儲到緩存服務器中,如Redis、Memcached等。不同服務器之間共享同一個緩存服務器,通過讀取和寫入緩存中的Session數據來實現共享。

在這里插入圖片描述

🚀四、PHP將session存入到Redis中去

下面的步驟將指導你如何將PHP的Session數據存儲到Redis中:

🔎4.1 安裝和配置Redis服務器

首先,需要在服務器上安裝Redis,并確保Redis能夠正確運行。可以通過執行以下命令來安裝Redis:

sudo apt-get install redis-server

修改Redis的配置文件redis.conf,確保以下配置項被啟用:

# 將Redis設置為守護進程模式
daemonize yes# 設置Redis監聽的IP地址和端口號
bind 127.0.0.1
port 6379# 設置Redis的持久化方式為RDB或AOF
save 900 1

重啟Redis服務器以使配置生效。

🔎4.2 安裝Redis擴展

在PHP中使用Redis作為Session存儲介質,需要安裝PHP的Redis擴展。可以通過以下命令來安裝Redis擴展:

pecl install redis

然后,在PHP的配置文件php.ini中添加以下配置項:

extension=redis.so

重啟Web服務器以使配置生效。

🔎4.3 配置PHP的Session存儲

接下來,我們需要配置PHP的Session存儲方式為Redis。在PHP的配置文件php.ini中,找到以下配置項,并進行相應的修改:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

以上配置項中,session.save_handler表示Session數據的存儲方式,session.save_path表示Redis服務器的地址和端口號。

重啟Web服務器以使配置生效。

🔎4.4 使用Redis存儲Session

當上述步驟完成后,PHP的Session數據就會被存儲到Redis中了。你可以通過以下代碼驗證:

// 開啟Session
session_start();// 設置Session數據
$_SESSION['username'] = 'WuKong';// 輸出Session數據
echo $_SESSION['username'];

在輸出上述代碼后,你會發現$_SESSION['username']的值為WuKong,表示Session數據成功存儲到Redis中,并能夠正確獲取。也可以登錄到Redis,如果看到以PHPREDIS_SESSION開頭的key說明配置已經生效了。

在這里插入圖片描述

🚀五、總結

SessionWeb開發中扮演著重要的角色,能夠記錄用戶狀態和行為。當應用運行在多個服務器上時,為了實現Session的共享,我們可以將Session數據存儲到共享的地方,如數據庫或緩存中。
在這里插入圖片描述
PHP語言為例,我們可以使用Redis作為Session的存儲介質。通過安裝和配置Redis服務器,安裝Redis擴展,并修改PHPSession存儲配置,我們可以將PHPSession數據存儲到Redis中。這樣,不同服務器之間就可以共享Session數據,提供一致的用戶體驗。

在這里插入圖片描述

注:今天的內容就分享到這里,更多實戰知識,請查看我這個專欄PHP進階實戰教程,我們下次見。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34863.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34863.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34863.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[gdc]Rendering ‘God of War Ragnark‘

gdc23, sony santa monica關于god of war的分享; back ground 作者stephen mcauley現在是santa monica的technical director;20年加入santa monica,作為rendering lead,有9年的經驗,之前在ubisoft montre…

虹科方案 | 成都大運會進行時,保障大型活動無線電安全需要…

成都大運會 7月28日,備受關注的第31屆世界大學生夏季運動會在成都正式開幕。據悉,這是全球首個5G加持的智慧大運會,也是眾多成熟信息技術的綜合“應用場”。使用基于5G三千兆、云網、8K超高清視頻等技術,在比賽現場搭建多路8K攝像…

Java“牽手”根據關鍵詞搜索(分類搜索)淘寶商品列表頁面數據獲取方法,淘寶API實現批量商品數據抓取示例

淘寶天貓商城是一個網上購物平臺,售賣各類商品,包括服裝、鞋類、家居用品、美妝產品、電子產品等。要獲取淘寶商品列表和商品詳情頁面數據,您可以通過開放平臺的接口或者直接訪問淘寶商城的網頁來獲取商品詳情信息。以下是兩種常用方法的介紹…

STM32 LL庫+STM32CubeMX--點亮板載LED

一、前期準備 硬件:STM32F103C8T6開發板調試工具:DAPLink(本次使用)或USB-TTL開發環境:STM32CubeMX、Keil、Vscode(可選)板載LED:PC13(低電平點亮) 二、STM32CubeMX配置 1.選擇芯片型號: 2.配置外設時鐘:…

Spring Cloud 智慧工地源碼(PC端+移動端)項目平臺、監管平臺、大數據平臺

智慧工地源碼 智慧工地云平臺源碼 智慧建筑源碼 “智慧工地”是利用物聯網、人工智能、云計算、大數據、移動互聯網等新一代信息技術,徹底改變傳統建筑施工現場參建各方現場管理的交互方式、工作方式和管理模式,實現對人、機、料、法、環的全方位實時監…

redis SortedSet類型命令

Redis中的Sorted Set(有序集合)是一種有序的、不重復的數據結構。Sorted Set中的每個成員都與一個分數(score)關聯,通過分數可以對成員進行排序。以下是Redis中Sorted Set類型的一些常見命令: ZADD key [NX…

開啟MySQL的binlog日志

1.判斷MySQL是否已經開啟binlog SHOW VARIABLES LIKE log_bin; 查看MySQL的binlog模式 show global variables like "binlog%";幾個關于binlog常用的命令 #查看日志開啟狀態 show variables like log_%; #查看所有binlog日志列表 show master logs; #查看最新一個b…

【Linux】DNS協議——應用層

目錄 DNS協議 DNS背景 域名簡介 域名解析過程 使用dig工具分析DNS過程 DNS(Domain Name System,域名系統)協議,是一個用來將域名轉化為IP地址的應用層協議。 DNS背景 TCP/IP中通過IP地址和端口號的方式,來確定網…

CAS服務端入門使用實踐

CAS服務端入門使用實踐 一、前言 1.簡介 CAS 是一個企業多語言單點登錄解決方案,支持大量附加身份驗證協議和功能,滿足身份驗證和授權需求的綜合平臺。 2.環境 Windows 10JDK 1.8git version 2.41.0.windows.3Tomcat 9.0.78Maven 3.5.3cas-overlay-…

【ARM 嵌入式 編譯系列 4.2 -- GCC 鏈接規范 extern “C“ 介紹】

文章目錄 extern "C" 介紹extern "C" 使用示例1.2.2 作用場景 上篇文章:ARM 嵌入式 編譯系列 4.1 – GCC 編譯屬性 likely與unlikely 學習 下篇文章:ARM 嵌入式 編譯系列 5 – GCC 內建函數 __builtin 介紹 extern “C” 介紹 exte…

輕轍視覺引擎以多種AI算法工具,助力紡織行業斷線檢測智能識別

近年來,人工智能技術在各行各業的應用愈發廣泛,機器視覺作為人工智能的重要分支,成為當下的研究熱點。機器視覺技術的發展,大幅提升了工業、農業、醫療等領域的效率和精度。尤其在工業領域,隨著智能制造的進一步發展&a…

stringstream常見用法

目錄 構造函數 輸出字符串 修改和清空字符串 利用 stringstream 去除字符串空格 利用stringstream去除指定的字符 stringstream 數據庫 <sstream> 構造函數 創建一個對象&#xff0c;向對象輸入字符串&#xff1a; string x"abcdefg";stringstream s…

Zookeeper與Kafka

Zookeeper與Kafka 一、Zookeeper 概述1.Zookeeper 定義2.Zookeeper 工作機制3.Zookeeper 特點4.Zookeeper 數據結構5.Zookeeper 應用場景6.Zookeeper 選舉機制 二、部署 Zookeeper 集群1.準備 3 臺服務器做 Zookeeper 集群2.安裝 Zookeeper3.拷貝配置好的 Zookeeper 配置文件到…

【Java】 java | git | win系統重裝會給開發環境帶來哪些問題

一、概述 1、近期發現電腦用起來不絲滑了&#xff0c;文件夾操作卡頓&#xff0c;一陣操作還會藍屏 2、不能忍&#xff0c;整理排查 二、電腦情況 1、CPU&#xff1a; I5-9400F 2.9GHz 6核 2、內存&#xff1a; 32G 3、固態&#xff1a;256G 4、機械&#xff1a;1T 5、盤符使用…

二叉樹的講解

&#x1f493;博主個人主頁:不是笨小孩&#x1f440; ?專欄分類:數據結構與算法&#x1f440; 刷題專欄&#x1f440; C語言&#x1f440; &#x1f69a;代碼倉庫:笨小孩的代碼庫&#x1f440; ?社區&#xff1a;不是笨小孩&#x1f440; &#x1f339;歡迎大家三連關注&…

詳解C語言中的int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t

2023年8月8日&#xff0c;周二上午 目錄 為什么會產生int8_t、uint8_t等這類數據類型int8_t、uint8_t等這類數據類型有什么用頭文件int8_t、uint8_t等這類數據類型是怎么實現的 為什么會產生int8_t、uint8_t等這類數據類型 根本原因在于&#xff0c;C 語言標準只是規定了各個…

SQL | 匯總數據

9-匯總數據 9.1-聚集函數 在實際開發過程中&#xff0c;可能會遇到下面這些情況&#xff1a; 確定大于某個值的有多少行數據&#xff0c;比如游戲排行榜&#xff0c;查詢玩家排行多少名。 獲取表中某些行的和&#xff0c;比如雙十一當天&#xff0c;某個用戶總訂單價格是多少…

學習篇之React Fiber概念及原理

什么是React Fibber&#xff1f; React Fiber 是 React 框架的一種底層架構&#xff0c;為了改進 React 的渲染引擎&#xff0c;使其更加高效、靈活和可擴展。 傳統上&#xff0c;React 使用一種稱為堆棧調和遞歸算法來處理虛擬 DOM 的更新&#xff0c;這種方法在大型應用或者…

最強自動化測試框架Playwright(7)- 使用cookie避免重復登錄

playwright在稱為瀏覽器上下文的隔離環境中執行測試。這種隔離模型提高了可重復性&#xff0c;并防止了級聯測試失敗。測試可以加載現有的經過身份驗證的狀態。這消除了在每次測試中進行身份驗證的需要&#xff0c;并加快了測試執行速度。 每次測試前登錄 以下示例登錄到 Git…

談談什么是云計算?以及它的應用

作者&#xff1a;Insist-- 個人主頁&#xff1a;insist--個人主頁 作者會持續更新網絡知識和python基礎知識&#xff0c;期待你的關注 目錄 ?編輯 一、什么是云計算 二、云計算的優勢與劣勢&#xff1f; 1、云計算的優勢 ①提高資源利用率 ②提升效率 ③降低成本 2、云…