【问题标题】:Does a session variable stay in memory in php会话变量是否保留在php的内存中
【发布时间】:2015-08-15 16:56:03
【问题描述】:

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

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

【问题讨论】:

  • 任何数量的数据都可以存储在那里,因为会话保存在服务器端。唯一的限制是 sessionId 长度,它不应超过 ~4000 字节 - HTTP 标头长度限制为 4Kb 暗示了此限制,因为 sessionId 可以存储在 cookie 中或在 URL 中编码(使用“URL 重写”)和 cookie 规范表示 cookie 的大小以及 HTTP 请求(例如 GET /document.html )不能超过 4kb。

标签: php session-variables


【解决方案1】:

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

但是,如果您有足够的内存,请将您的会话存储在内存中(非常快)。 Memcached 是一个很棒的分布式内存对象缓存系统。请参阅http://memcached.org 了解更多信息。

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

【讨论】:

    【解决方案2】:

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

    我忘了说信息主要是从这里获得的:Where and How is data stored in a session?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 2013-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多