【问题标题】:PHP: SESSIONS causing slownessPHP:会话导致缓慢
【发布时间】:2015-04-04 11:02:54
【问题描述】:

我有一个网站,当用户未登录时速度非常快,但在登录后开始使用 SESSIONS 时速度会急剧下降。我开始使用 session_write_close();尽可能立即,但似乎没有帮助。

SESSIONS 设置为 /tmp 中的文件

有人对如何改进有任何想法吗?我每个用户使用 8 个 $_SESSIONs。降低它会提高性能吗?

编辑:澄清一下,我设置了 8 个不同的 $_SESSION 变量,而不是打开 8 个会话。

编辑 2:将我的 SESSION 数据合并到一个数组中。没提升。数据为 630 个字符。让它变小也不会改善它。

【问题讨论】:

  • 您必须并且可以使用一个会话来存储所有信息。无需为单个用户执行 8 个会话。
  • $_SESSION[] 中的条目数量并不重要(如果它们在合理的限制内)。会话数据在session_start() 上只读取一次,并且在脚本结束时(或在session_write_close())上也只写回文件一次。这将花费大量时间的一些原因可能是安装在/tmp(NFS,也许是?)上的文件系统非常慢,您存储在$_SESSION(非常大的阵列?)中的信息非常多。我宁愿调查数据库查询(代码通常为登录用户运行比匿名用户更多的查询)。

标签: php performance session


【解决方案1】:

我不知道您在会话中保存了哪些数据,但听起来有点像您在会话中保存了大量大数据,例如整个对象。会话是从您的硬盘写入和读取的。当你有很多数据时,加载它们需要很长时间。

要检查您的会话是否包含大量数据,您可以发送var_dump($_SESSION); 来检查您的会话中有哪些数据。

接下来,您应该将数据放在 SSD 等快速设备上,而不是放在 NFS 文件系统或其他任何东西上。

通常会话系统足够快。

【讨论】:

  • var_dump($_SESSION);长度为 630 个字符,显示我的 SESSION 数组数据。
  • 如果你在会话中只写例如'test',你会遇到同样的性能问题吗?
  • 与“测试”相同的问题。
  • 你说如果你登录了这个问题就会发生,也许不是你的会话?您可以启用 xdebug 并制作配置文件日志并查看需要这么多时间的内容。 xdebug.org/docs/profiler
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
相关资源
最近更新 更多