2011-08-05 42 views
0

我正在爲一家公司進行快速調查,該公司每兩小時將會有大約20萬人次(峯值)的訪客。我只是想知道是否使用$ _SESSION變量會綁定服務器。我們在這些變量中存儲的所有內容至多是一個6個字符的字符串或一個數字整數。我不熟悉PHP世界,所以我不確定$ _Session變量如何可靠或多少會佔用服務器。我們使用的服務器將是雲服務器。 最後一點需要注意的是,在我結束之前,每個參觀者的會議只能持續6-10分鐘。

任何幫助將不勝感激!

+0

你在說什麼? –

+0

你知道Facebook嗎?我敢打賭,他們使用PHP會話! – Jacob

+0

您是否考慮過使用Cookie來代替? – mellowsoon

回答

0

紮起來怎麼樣?磁盤空間?使用默認的基於文件的會話處理程序存儲簡單的6char字符串將佔用磁盤上大約6 +的變長名稱+〜6個字符的空間。將有一些開銷來加載/反序列化會話文件中的數據。但是它會比加載/編譯使用會話數據的腳本的初始開銷小得多。請記住,PHP的默認會話使用磁盤作爲他們的存儲介質 - 腳本退出後,它們不會保留在內存中。

0

在PHP中,您可以更改會話處理程序。默認會話處理程序是將數據寫入臨時文件,每個會話一個文件。它可以正常工作,但在運行高流量應用程序時有一定的侷限性(儘管每小時200K,您對默認處理程序沒有問題)。

而且簡單的辦法是使用Memcached的會話處理器,與PECL /內存緩存擴展名(不要與PECL/Memcached的擴展迷惑):

http://www.php.net/manual/en/memcache.examples-overview.php(見例#2)

+0

有關信息,我們正在運行一個具有該設置的生產服務器,並且無需任何麻煩即可獲得60個請求(會話實際上不是瓶頸,它甚至可以與默認處理程序一起工作) – gou1

1

通過默認情況下,每次調用session_write_close()或腳本終止時,$ _SESSION中的數據都會寫入磁盤。如果沒有測試將要使用的服務器硬件上的最終應用程序,無法確切知道這將如何執行。由於數據量很小,真正的擔心是磁盤延遲。一個簡單的解決方法是將PHP的session_save_path設置爲內存中的文件系統。

0

我想你不想在會話中存儲數據,因爲它寫入磁盤。如果有人用多個請求擊中了應用程序,您是否能夠保證它們擊中了雲中的同一臺計算機?編寫起來相當複雜。我會cookie的用戶,而不是。

http://php.about.com/od/learnphp/qt/session_cookie.htm

http://www.quora.com/Does-PHP-handle-sessions-by-writing-session-variable-data-to-disc-or-does-this-information-persist-only-in-RAM-Will-accessing-session-data-cause-a-disc-read-in-PHP

像別人說的,我會使用Memcached的,如果你想擴展,而是要回答你的問題直接,我覺得你的服務器應該能夠處理你所描述的用法。

+0

請進行計算你會發現在這種情況下生成的整個會話數據是荒謬的。 –