成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Session 的存儲(chǔ)方式

fuchenxuan / 1075人閱讀

摘要:的存儲(chǔ)方式在文件中,進(jìn)行配置。一文件存儲(chǔ)注釋表示多級目錄,值為數(shù)字。表示創(chuàng)建的文件權(quán)限。例如,設(shè)定為將使創(chuàng)建的會(huì)話文件和路徑類似于。通過修改可選參數(shù)來改變這種默認(rèn)行為,其中是的八進(jìn)制表示。設(shè)置不影響進(jìn)程的掩碼。多機(jī)房的存儲(chǔ)怎么弄同步唄

Session 的存儲(chǔ)方式

在 php.ini 文件中,進(jìn)行配置。

涉及配置參數(shù)

 - session.save_handler

 - session.save_path

注意:這兩個(gè)參數(shù)可以在 PHP 中通過 ini_set 來設(shè)置,不用直接覆蓋原 php.ini 中的值。

一、文件存儲(chǔ)

session.save_handler = files

session.save_path = "N;MODE;/path"

注釋:N 表示多級目錄,值為數(shù)字。MODE 表示創(chuàng)建的 Session 文件權(quán)限。/path 表示 Session 存儲(chǔ)路徑。

這里我設(shè)置

session.save_path = "2;600;/tmp/"

重啟PHP-FPM,然后寫個(gè)測試腳本 test.php,代碼里運(yùn)行 session_start();

結(jié)果報(bào)錯(cuò)

PHP Warning:  session_start(): open(/tmp/h/p/sess_hpbfs95c9omtfn30h5lt43i597, O_RDWR) failed: No such file or directory

為什么呢?

我們來看下PHP官網(wǎng)怎么說的吧

此指令還有一個(gè)可選的 N 參數(shù)來決定會(huì)話文件分布的目錄深度。例如,設(shè)定為 "5;/tmp" 將使創(chuàng)建的會(huì)話文件和路徑類似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If。

要使用 N 參數(shù),必須在使用前先創(chuàng)建好這些目錄。

在 ext/session 目錄下有個(gè)小的 shell 腳本名叫 mod_files.sh,windows 版本是 mod_files.bat 可以用來做這件事。

此外注意如果使用了 N 參數(shù)并且大于 0,那么將不會(huì)執(zhí)行自動(dòng)垃圾回收,更多信息見 php.ini。

另外如果用了 N 參數(shù),要確保將 session.save_path 的值用雙引號 "quotes" 括起來,因?yàn)榉指舴痔枺?;)在 php.ini 中也是注釋符號。

文件儲(chǔ)存模塊默認(rèn)使用 mode 600 創(chuàng)建文件。通過 修改可選參數(shù) MODE 來改變這種默認(rèn)行為: N;MODE;/path ,其中 MODE 是 mode 的八進(jìn)制表示。 MODE 設(shè)置不影響進(jìn)程的掩碼(umask)。

Caution:使用以上描述的可選目錄層級參數(shù) N 時(shí)請注意,對于絕大多數(shù)站點(diǎn),大于1或者2的值會(huì)不太合適——因?yàn)檫@需要?jiǎng)?chuàng)建大量的目錄:例如,值設(shè)置為 3 需要在文件系統(tǒng)上創(chuàng)建 64^3 個(gè)目錄,將浪費(fèi)很多空間和 inode。僅僅在絕對肯定站點(diǎn)足夠大時(shí),才可以設(shè)置 N 大于2。

了解這些,我們就開始處理 Session 存儲(chǔ)目錄的創(chuàng)建了,注意子目錄的權(quán)限問題。

bash /path/to/mod_files.sh

使用多級目錄的后果就是,你必須手動(dòng)清理這些 Session。

二、Redis

首先你得安裝了 Redis 擴(kuò)展

session.save_handler = redis

//多節(jié)點(diǎn)
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5,tcp://ip2:port2?weight=2"

//單個(gè)節(jié)點(diǎn)
session.save_path = "tcp://ip:port?auth=secret?weight=1&timeout=2.5"

//socket 方式
session.save_path = "unix:///var/run/redis/redis.sock?persistent=1&weight=1&database=0

解釋一下,涉及參數(shù)的含義:

ip: Redis 節(jié)點(diǎn)的 IP。

port: Redis 節(jié)點(diǎn)的端口。

auth: 與 Redis 節(jié)點(diǎn)進(jìn)行權(quán)限驗(yàn)證。

weight: 權(quán)重,上面的例子表示session數(shù)量,ip2節(jié)點(diǎn) 是 ip1節(jié)點(diǎn)的兩倍。

timeout: Redis 連接超時(shí)時(shí)間。單位:秒。連接失敗時(shí),Session不可用(風(fēng)險(xiǎn)?。?
persistent: 持久連接。

prefix: 前綴,默認(rèn)是 "PHPREDIS_SESSION:"。

database: 選擇哪個(gè) Redis 數(shù)據(jù)庫。取值:int。參見 Redis 配置 databases 16。

重啟PHP-FPM,然后寫個(gè)測試腳本 test.php,代碼里運(yùn)行 session_start();

我們看看效果

redis-cli

127.0.0.1:6379> KEYS *
1) "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"

127.0.0.1:6379> TYPE "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
string

127.0.0.1:6379> get "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
"admin_user|a:3:{s:8:"username";s:4:"test";s:4:"name";s:4:"test";s:5:"email";s:12:"[email protected]";}"

127.0.0.1:6379> ttl "PHPREDIS_SESSION:fi08i7ms4rtrdsb6n1oqb0fek2"
(integer) 292

可以看到 Session 存入了 Redis 中,數(shù)據(jù)結(jié)構(gòu)用的是 String。

Session 的過期時(shí)間

使用 php.ini 中的 session.gc_maxlifetime

可以通過 ini_set 在 php 中自定義。

多機(jī)房的 Redis 存儲(chǔ)怎么弄?

同步唄!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30256.html

相關(guān)文章

  • Express.js?中 Sessions 如何工作?(譯)

    世界上任何一個(gè)擁有用戶數(shù)據(jù)的 web 應(yīng)用都必須處理 sessions。作為一名開發(fā)者,我們必須要知道它們是什么以及如何處理它們。在這篇文章中,我想要分享的是: session 是什么? session 如何存儲(chǔ)數(shù)據(jù)? 你如何決定存放 session 數(shù)據(jù)的位置? 在 sessions 工作時(shí),你必須意識(shí)到的安全性上的影響有哪些?在一些示例代碼中,我將會(huì)運(yùn)用?session npm modul...

    Hydrogen 評論0 收藏0
  • cookie與session詳解

    摘要:所謂的無連接就是服務(wù)器收到了客戶端的請求之后,響應(yīng)完成并收到客戶端的應(yīng)答之后,即斷開連接。從而節(jié)省傳輸時(shí)間。協(xié)議對事務(wù)的處理沒有記憶能力。這種方式某種方面上講解放了服務(wù)器,但是卻不利于客戶端與服務(wù)器的連接。 session與cookie是什么? session與cookie屬于一種會(huì)話控制技術(shù).常用在身份識(shí)別,登錄驗(yàn)證,數(shù)據(jù)傳輸?shù)?舉個(gè)例子,就像我們?nèi)コ匈I東西結(jié)賬的時(shí)候,我們要拿出我...

    SwordFly 評論0 收藏0
  • Django session源碼閱讀

    摘要:初步的猜想是第一次和第二次請求間隔太短,數(shù)據(jù)還沒有存進(jìn),到時(shí)讀取失敗,帶著這樣的疑問,閱讀了的源碼。源碼非常簡單,沒有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法,讀起來沒費(fèi)什么勁。當(dāng)過期后,用戶獲取的就為空,就會(huì)為用戶重新初始化生成。 歡迎大家訪問我的博客,查看更多內(nèi)容。 背景 最近在做djnago開發(fā)時(shí),遇到一個(gè)session問題,過程如下,第一個(gè)POST請求時(shí),把數(shù)據(jù)存放在session,在第二次POS...

    Profeel 評論0 收藏0
  • 淺談cookie,session和localStorage,sessionStorage區(qū)別

    摘要:保持狀態(tài)保存在瀏覽器端,保存在服務(wù)器端存儲(chǔ)的大小單個(gè)保存的數(shù)據(jù)不能超過大小沒有限制。的目的是克服由所帶來的一些限制,當(dāng)數(shù)據(jù)需要被嚴(yán)格控制在客戶端時(shí),不需要持續(xù)的將數(shù)據(jù)發(fā)回服務(wù)器。的生命周期是僅在當(dāng)前會(huì)話下有效。 寫在前面 既然是淺談,就不會(huì)詳細(xì)從底層原理解釋這幾個(gè)的區(qū)別,就簡單地聊一下,這幾個(gè)的區(qū)別,優(yōu)缺點(diǎn),應(yīng)用場景 cookie和session 瀏覽器的緩存機(jī)制提供了可以將用戶數(shù)據(jù)存...

    frolc 評論0 收藏0
  • 次世代會(huì)話管理項(xiàng)目 Spring Session

    摘要:會(huì)話管理一直是企業(yè)級應(yīng)用的重要部分。傳統(tǒng)會(huì)話管理技術(shù)的問題的目的是解決傳統(tǒng)的會(huì)話管理技術(shù)的各種問題。對如和之類的閉源產(chǎn)品,找到適合它們的會(huì)話管理技術(shù)的替代實(shí)現(xiàn)則通常是不可能的。典型的應(yīng)用會(huì)將當(dāng)前用戶的身份及其安全級別或角色存儲(chǔ)在會(huì)話里面。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文來自云+社區(qū)翻譯社,由Tnecesoc編譯。 會(huì)話管理一直是 Java 企業(yè)級應(yīng)用的...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<