首页 > 解决方案 > 正确管理用于重定向的 php 会话

问题描述

在我的 PHP 应用程序中,我大量使用会话在重定向期间保存信息:

unset()在实现它时,我在大约 40 个脚本中调用了session_start,但除了偶尔调用$_SESSION变量之外,我不会以任何方式关闭会话。

现在,当我在我的服务器上调查性能问题时,我注意到使用不足session_write_close()可能是问题所在(即使问题是在 apache linux 上并且我的 web 应用程序托管在 wamp 服务器上)并且在最后,即使这不是原因,尝试尽可能快地关闭会话可能是明智的。

我想知道如何确定可以安全销毁/重新启动会话的点?最好的方法是什么?

请记住,我希望打开的会话数不是问题,因此我想确保将其保持在最低限度。

标签: phpsession

解决方案


通常我们不会关闭会话,除非它非常重要,因为一旦关闭浏览器,会话就会关闭。由于对您的应用程序缺乏了解,我们无法就脚本中关闭会话的确切需要发表评论。考虑到您描述的事件,在某些情况下使用 cookie 可能会更好,例如“在您登录时保存信息以访问某些功能”。关于错误和警告;在仪表板页面上显示消息后,您可能希望删除一些会话变量。

对于“保存类别信息,以便在重定向后显示正确的选项卡和/或表单”,您可以考虑使用 URL 中的参数来显示所需的选项卡,而不是使用会话变量。

如果您打算使用 session_write_close() 那么在这种情况下,如果您需要再次访问同一脚本中的会话,则需要执行 session_start。session_write_close() 的使用只是为了解决会话锁定问题,以防两个脚本尝试同时访问同一个会话。因此,您可能想描述您的应用程序是否属于这种情况。


推荐阅读