看板 Ajax 關於我們 聯絡資訊
※ 引述《TonyQ (自立而後立人。)》之銘言: : 因為你原文是寫 session 需要的話可以放到 memory , : 但根據我的經驗是反過來, : session 一般是放 memory ,需要時才轉 io 或 db。 : 這也有可能是語言或平台的差異啦, : 但是據我所知,asp/php/javaee/asp.net 應該都是預設放記憶體才對。 我只能肯定 php 預設是丟 file XDD 而且 php session 搭配 memory 的最佳解也是 mmc 而非直接食用記憶體。 : 基本上各 container 的 default session 實作,應該都是 in memory 的吧, : 除了像 php 的 CI 之類的 framework 層有自己想法自己包 db session。 : 還有一個特例是 cluster 環境下,實作時也會特別把 session 弄成可以 IO。 : 預設會是 in memory 是有理由的, : 你要能 IO 的東西勢必要是能 serializable (可序列化)的。 : 可序列化意味著可以進行 IO 操作,寫入檔案裡面跟還原回來。 : 也就是說,如果是你放的是 string/int ..etc 這類基本型態就算了, : 基本型態通常都會是可序列化的。 : 但如果今天你放的是 custom class 的 instance , : 他存進去後還能不能安全照你想的方式撈回來,那就是另一回事了。 : 當然有些語言「可能」不用煩惱這些問題,(語言特性或限制就處理掉了) : 但是在很多地方,這些還是討厭的事情。 不懂 XDD session 的儲存「怎麼實做」跟「儲存在哪裡」應該沒有直接的關聯吧? 以 PHP 而言無論是丟 file 或 memory 都同樣是做 serialize, 所以資源能否放進 session 其實是關乎那樣東西自身的 serialize 能力, 例如 string / array / object 等等。 當然如果是自己寫 session handler 就跟這沒關係了 XD : 另外,這個問題要看你把多少東西塞 session , : 我前公司的產品在 session 每個人就可以到幾 mb ,(有特別需求) : 就不見得一定能這樣玩了。XD : 我只是在說明「預設」跟「常見」的狀況啦, : 當然每個專案還會因為每個專案的需求調配跟調整囉。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.181.108.101 ※ 編輯: gpmm 來自: 175.181.108.101 (05/15 23:01)
TonyQ:基本上看起來 php 是個特例,以 JavaEE 而言就很有差了 :P 05/15 23:05
TonyQ:有些語言進/出 session 時是不作 serialize/deserialize 的 05/15 23:06
TonyQ:所以是不同語言對 session 操作上的認知不同,因為我太習慣 05/15 23:07
TonyQ:session 是存在 memory 的,所以對 php 這個特性反而是誤判 05/15 23:08
gpmm:每個習慣了自己常用語言的人都會覺得別人家是特例 XDD 05/15 23:13
gpmm:我也沒想過別的語言會是預設塞在 memory 裡 05/15 23:13
gpmm:查了一下,ROR 預設是加密後塞在 cookie 裡 :Q 05/15 23:16
gpmm:nodejs 預設是存在記憶體 05/15 23:16
TonyQ:cookie 塞的下 ? 我是有查到 rails 有in memory的實作,也沒 05/15 23:17
TonyQ:有 serialize . 05/15 23:17
TonyQ: 當他是用 in memory 的時候 05/15 23:18
gpmm:我是都找預設的啦 XD 以實做而言那就什麼都有可能了 05/15 23:18
TonyQ:無所謂啦,特例不過是個詞, asp 也是 in memory 05/15 23:18
gpmm:asp.net 預設也是塞記憶體 05/15 23:18
gpmm:你不知道 phper 天生對「特例」這一類的詞很敏感(炸) XDDD 05/15 23:19
TonyQ:我是真的不知道,why? XDDD 05/15 23:20
TonyQ:Sorry, 因為我認知中碰過得語言大多是 in memory 居多。~_~a 05/15 23:20
superpai:php的存在本身就是一個特例...(遠目) 05/15 23:35
superpai:然後CI還蠻奇怪的 你有db的話session就放db 05/15 23:37
superpai:沒有db的話就沒加密塞在cookie裡 05/15 23:38
superpai:不知道為什麼不想用php的session 05/15 23:38
mrbigmouth:加密後塞cookie裡這種作法實在好神祕.... 05/16 03:28
mrbigmouth:等等 沒加密塞在cookie裡也太神了吧!!! 這樣登入資訊 05/16 03:28
mrbigmouth:用session真的沒問題!? 05/16 03:28
mrbigmouth:普遍上的認知不就是session放伺服器cookie不安全嗎!? 05/16 03:29
mrbigmouth:加密塞cookie我都很沒安全感了.... 05/16 03:30
fillano:node.js本身沒session機制的,應該是connect的預設作法 05/16 15:42
gpmm:喔喔喔喔是費公 05/16 15:53
hellolucky:Rails預設是cookie沒錯 但也有db和in memory 05/16 21:36
hellolucky:改個config就可以輕鬆處理好 05/16 21:38
hellolucky:不過in memory不是最快的嗎?配合memcached或redis 05/16 21:39
hellolucky:還可以設定時間expire 05/16 21:39
weiyucsie:除了一些persistent connections 05/20 01:10
weiyucsie:好像php網頁內的變數,大部分都是在單次request存活 05/20 01:11
weiyucsie:不知道這和php的session要serialize有沒有關係 05/20 01:11
weiyucsie:(像是cgi一個process處理一個request的感覺) 05/20 01:15
EROS4:1 06/05 19:14