2015-08-15 450 views
1

如果我在php中將會話變量中的文本文件的內容存儲起來,它會保留在會話期間的內存中嗎?會話變量是否保留在內存中的PHP

我有一個小型項目,我需要在剛好超過1MB的特定文本文件中執行搜索。我正在考慮使用會話變量,如果它保留在內存中,這樣我就不必一次又一次地讀這個文件。

+0

任何數量的數據都可以存儲在那裏,因爲會話保留在服務器端。 唯一的限制是sessionId的長度不應該超過〜4000字節 - 由於sessionId可能存儲在cookie中或編碼在URL中(使用「URL重寫」),而且HTTP頭長度限制爲4Kb cookie規範說cookie的大小以及HTTP請求(例如GET /document.html)不能超過4kb。 –

回答

0

不,會話將默認保存在文件中(例如在/ tmp中)。當然,你可以使用內存,例如memcached。也可以爲會話使用數據庫。

但是,如果您有足夠的內存,請將會話存儲在內存中(速度非常快)。 Memcached是一個很棒的分佈式內存對象緩存系統。有關更多信息,請參見http://memcached.org

這裏對memcached的擴展庫:http://php.net/manual/en/book.memcached.php

0

是的,它會留在記憶中以保持會話的生命。你的1mb遠離它可以容納的最大容量(默認情況下我認爲是128MB)。 但是,如果從文件中讀取文件效率更高,則測試兩種方法。

0

它將使用在服務器上的文件存儲。您可以在由session_save_path定義的路徑中看到會話文件。根據文件系統的不同,該文件可能會保留在內存中,具體取決於使用情況,但基本上是一個文件。

我忘了提,獲得的信息主要來自這裏:Where and How is data stored in a session?

0

會話不是被存儲在文件或數據庫中,它不會消耗PHP內存(服務器內存)。