在php中,会话变量是否保留在内存中?


Does a session variable stay in memory in php

如果我将文本文件的内容存储在php的会话变量中,它会在会话期间留在内存中吗?

我有一个小项目,我需要在那个特定的文本文件中执行搜索,这只是超过1mb。我正在考虑使用会话变量,如果它留在内存中,这样我就不必一次又一次地读取这个文件。

不,会话将默认存储在文件中(例如在/tmp中)。当然,您可以使用内存,例如memcached。也可以为会话使用数据库。

但是,如果你有足够的内存,将会话存储在内存中(非常快)。Memcached是一个很好的分布式内存对象缓存系统。详见http://memcached.org

关于php的memcached扩展:http://php.net/manual/en/book.memcached.php

将使用服务器中的文件进行存储。您可以在session_save_path定义的路径中看到会话文件。根据文件系统,文件可以根据使用情况留在内存中,但基本上是一个文件。

我忘了提到信息主要是从这里获得的:数据在会话中存储在哪里以及如何存储?

是,它将在会话生命周期内保留在内存中。你的1mb远不是它能容纳的最大容量(我认为默认是128MB)。但是,测试两种方法是否只从文件中读取更有效。

会话存储在文件或数据库中,它不消耗PHP内存(服务器内存)。