2009-09-06 23 views

回答

16
$size_of_session_estimate = strlen(serialize($_SESSION)); 

現在,這只是一個估計值,作爲序列化處理程序是用來串行化會話,但也不會太遙遠。

這就是說,除非你在會話中存儲了大量的數據,否則你可能不需要擔心這一點。

+0

+1點上,*和*非常快。 – karim79 2009-09-06 18:59:14

+0

我很好奇,我認爲會議的規模限制是基於你的記憶,是否還有其他因素?我問,因爲我在用戶會話中存儲了瘋狂的數據量 – JasonDavis 2009-09-06 18:59:49

+0

我想這是可行的,因爲strlen提供了多個字符。 和每個字符是1kb ..糾正我,如果我錯了。 – Rahul 2009-09-06 19:03:29

8

如果您使用的是Apache,請查看您的APACHE_ROOT/tmp文件夾並查找名爲sess_***********的文件。

否則從here採取腳本並使用array_size($_SESSION)調用它。這可能與確切值略有不同(取決於PHP模塊的壓縮/優化)。

+0

請記住,某些配置可能會將會話存儲在/ tmp之外的其他位置。你需要檢查你的PHP配置。 – Charles 2009-09-06 19:00:17

+2

paste-it.net處於脫機狀態,你有腳本的替代鏈接嗎? – rubo77 2013-09-25 01:51:41

4

此:

echo strlen(session_encode()); 

會給你的磁盤空間$ _SESSION使用量(假設session.save_handler是默認值文件),因爲session_encode()返回一個字符串與存儲在會話文件中的字符串相同。

它也會給的存儲器使用量的更好的指示,因爲session_encode()增加更少的元數據比的serialize()

在默認的Apache設置,你可以看到會話數據與存儲在磁盤上:

session_write_close(); 
echo file_get_contents(sys_get_temp_dir() . 'sess_' . session_id()); 
+1

「應該接受的答案」 – 2017-01-24 21:16:15

相關問題