SESSION的理解及優(yōu)化配置

  • session 與 cookie 的關(guān)系

1.session 是存在服務(wù)端的伯复,cookie 是存在客戶端的。session 是基于cookie 才會存在的。
2.session 必須至少存在一條數(shù)據(jù),瀏覽器上才會有 cookie 值存在
3.cookie 的鍵逆趣,是由 php.ini 中的 session.name 參數(shù)決定的,這個是識別用戶用的惠险,客戶端和服務(wù)端都有這個值
4.客戶端的cookie 鍵和值與服務(wù)端的 cookie 鍵值都是一致的诡蜓。
5.session 數(shù)據(jù)可以存在任何地方诽表,如果redis中,直接使用 get 即可取出數(shù)據(jù)
6.session 存在 redis 中就可以解決同域名(但二級域名不同)的跨域問題诗舰。比如 a.test.com 警儒, b.test.com

客戶端請求攜帶的cookie.png
服務(wù)端返回的cookie
session 存在 redis 中

1.SESSION是保存到了服務(wù)器上,而cookie是保存在了客戶端
2.PHPSESSID是保存在cookie里面
3.SESSION是根據(jù)PHPSESSID值來識別用戶的
4.同一個瀏覽器的PHPSESSID值是固定的,正是因?yàn)檫@樣眶根,才識別了用戶的session
5.拿到PHPSESSID值蜀铲,就可以拿到本服務(wù)器上本客戶的所有session
6.多臺服務(wù)器之間共享SESSION其實(shí)是要做到PHPSESSID共享
7.PHPSESSID只要不關(guān)閉網(wǎng)頁,怎么刷新都是一樣
8.在 PHP 中属百,保存 session_id 的 cookie 名稱默認(rèn)叫作PHPSESSID蝙茶,這個名稱可以通過 php.ini 中session.name來修改,也可以通過函數(shù) session_name()來修改诸老。

無論是通過調(diào)用函數(shù) session_start() 手動開啟會話隆夯, 還是使用配置項(xiàng) session.auto_start 自動開啟會話, 對于基于文件的會話數(shù)據(jù)保存(PHP 的默認(rèn)行為)而言别伏, 在會話開始的時候都會給會話數(shù)據(jù)文件加鎖蹄衷, 直到 PHP 腳本執(zhí)行完畢或者顯式調(diào)用 session_write_close() 來保存會話數(shù)據(jù)。 在此期間厘肮,其他腳本不可以訪問同一個會話數(shù)據(jù)文件愧口。

對于大量使用 Ajax 或者并發(fā)請求的網(wǎng)站而言,這可能是一個嚴(yán)重的問題类茂。 解決這個問題最簡單的做法是如果修改了會話中的變量耍属, 那么應(yīng)該盡快調(diào)用 session_write_close() 來保存會話數(shù)據(jù)并釋放文件鎖。 還有一種選擇就是使用支持并發(fā)操作的會話保存管理器來替代文件會話保存管理器巩检。

  • php.ini中的session配置

[Session]

session.save_handler = files

session.save_path = "/tmp"

session.use_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0   // 發(fā)送到瀏覽器的 cookie 的生命周期

session.serialize_handler = php

session.gc_divisor = 1000

session.gc_probability = 1

session.gc_maxlifetime = 1440
  • 如果使用 redis存儲厚骗。memcache 存儲的設(shè)置是一樣的
session.save_handler = redis

session.save_path = "tcp://127.0.0.1:6381"  // 也可以不不添加 tcp
需要用到tcp來連接redis,如果你設(shè)置reids 有密碼訪問的話兢哭,這樣加上就可以了:
tcp://127.0.0.1:6381?auth=authpwd

session同步

在做了web集群后领舰,你肯定會首先考慮session同步問題,
因?yàn)橥ㄟ^負(fù)載均衡后迟螺,同一個IP訪問同一個頁面會被分配到不同的服務(wù)器上冲秽,
如果不同的服務(wù)器用的是不同的redis服務(wù),那么可能就會出現(xiàn)矩父,一個登錄用戶锉桑,一會是登錄狀態(tài),一會又不是登錄狀態(tài)窍株。
所以session這個時候就要同步了民轴。剛好郑诺,我們選擇用redis作為了存儲,是可以在多臺redis 服務(wù)器中同步的杉武。

具體可以搜索 reidis主從同步或者redis 集群

為什么重啟瀏覽器后 Session 數(shù)據(jù)就取不到了

session.cookie_lifetime 以秒數(shù)指定了發(fā)送到瀏覽器的 cookie 的生命周期。值為 0 表示"直到關(guān)閉瀏覽器"辙售。默認(rèn)為 0轻抱。

如何設(shè)置一個嚴(yán)格30分鐘過期的Session

使用memcache, redis等,因?yàn)樗麄儽旧砭椭С诌^期時間設(shè)置,他們又是鍵值對存儲方式

1. 設(shè)置Cookie過期時間30分鐘, 并設(shè)置Session的lifetime也為30分鐘.

2. 自己為每一個Session值增加Time stamp.

3. 每次訪問之前, 判斷時間戳.

最后, 有同學(xué)問, 為什么要設(shè)置30分鐘的過期時間: 這個, 首先這是為了面試, 第二, 實(shí)際使用場景的話, 比如30分鐘就過期的優(yōu)惠劵?
  • 銷毀 session
  session_unset();
  session_destroy();
  • 重新生成 session_id()
   session_regenerate_id();
63C199EB9EE1DC08615032B849F148DC.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旦部,一起剝皮案震驚了整個濱河市祈搜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌士八,老刑警劉巖容燕,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婚度,居然都是意外死亡蘸秘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蝗茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醋虏,“玉大人,你說我怎么就攤上這事哮翘【苯溃” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵饭寺,是天一觀的道長阻课。 經(jīng)常有香客問我,道長艰匙,這世上最難降的妖魔是什么限煞? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮员凝,結(jié)果婚禮上晰骑,老公的妹妹穿的比我還像新娘。我一直安慰自己绊序,他們只是感情好硕舆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骤公,像睡著了一般抚官。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阶捆,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天凌节,我揣著相機(jī)與錄音钦听,去河邊找鬼。 笑死倍奢,一個胖子當(dāng)著我的面吹牛朴上,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卒煞,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼痪宰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了畔裕?” 一聲冷哼從身側(cè)響起衣撬,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扮饶,沒想到半個月后具练,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甜无,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年扛点,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岂丘。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡占键,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出元潘,到底是詐尸還是另有隱情畔乙,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布翩概,位于F島的核電站牲距,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钥庇。R本人自食惡果不足惜牍鞠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望评姨。 院中可真熱鬧难述,春花似錦、人聲如沸吐句。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗦枢。三九已至攀芯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間文虏,已是汗流浹背侣诺。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工殖演, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人年鸳。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓趴久,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搔确。 傳聞我的和親對象是個殘疾皇子彼棍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353