【问题标题】:Could session_start() in php be messing up my users sessions lengths?php 中的 session_start() 会弄乱我的用户会话长度吗?
【发布时间】:2011-06-25 01:40:49
【问题描述】:

我的 php.ini 文件设置为在 24 小时内过期会话。但我的用户在 20 分钟左右后退出后抱怨。

我在每个页面的开头使用 session_start。会不会给我添乱了? 还是有什么其他原因造成的?

刚刚意识到我可能在共享主机上。它可能有一些用于会话垃圾收集的组设置。任何人都知道如何调查或设置我的更具体?

谢谢!

【问题讨论】:

  • 您必须在脚本开头使用 session_start() 否则您将无法访问会话数据。
  • @Kenneth 我在每个脚本的开头都使用 session_start。
  • 这是正确的,这就是你应该做的......

标签: php apache


【解决方案1】:

检查phpinfo() 以查看实际设置。 PHP 有多个 .ini 文件,并且可以在多个位置覆盖其设置,因此您的会话会话可能不是实际有效的会话。 phpinfo 的输出将显示“本地”的 this-is-now-whats-in-effect 设置是什么。

除此之外, session_start() 不会删除会话本身,但它可能会根据一些 gc_* .ini 设置触发会话垃圾收集器运行。不过,这是一个概率事件,不会在您每次开始会话时都发生。

另一种可能性是您的会话文件正在某个地方进入系统临时目录,而 PHP 外部的东西每隔 20 分钟清理一次该目录。因此,请检查 session.save_path 设置是什么,看看是否有任何东西在清理该位置。

【讨论】:

  • @Marc 是的,我想既然我在共享托管计划中,我可能会共享会话 gc 配置。你知道如何让我的独一无二吗?
  • 其实我不在共享主机上。我在 VPS 上
  • 我有 session.gc_maxlifetime = 200000 但显然我的应用程序没有在听 :)
  • 是 200,000 来自 phpinfo() 的内容,还是您放入 php.ini 的内容?只有 phpinfo() 所说的很重要。您可以尝试将php_value session.gc_maxlifetime = 200000 放入站点根目录的 .htaccess 中,但最好通过 php.ini 进行。
  • 看起来不错,我会检查是否有清理会话缓存目录的 cron 作业。
【解决方案2】:
ini_set('session.gc_maxlifetime',28800);  #28800 - just an example time - set your own
ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',1);
session_save_path('/path to your sessions folder');
ob_start();
session_start();

您确实需要先创建一个会话文件夹。 这肯定适用于 GoDaddy 共享主机。 在 VPS 上,您可以使用它或只更新您的 php.ini 文件。

【讨论】:

  • @AR 我更新了我的 php.ini 并且出于某种原因,当我执行 phpinfo 时,新的更改确实出现了,但我不确定会话为什么会过期。 :(
  • php.net/manual/en/session.configuration.php 如果不同的脚本具有不同的 session.gc_maxlifetime 值,但共享相同的存储会话数据的位置,则具有最小值的脚本将清理数据。在这种情况下,将此指令与 session.save_path 一起使用。会是这样吗?
  • @AR 还有哪些脚本可能具有 session.gc_maxlifetime 值?顺便说一句,理想情况下,我想将所有设置保留在配置中,而不是代码中。但是肯定有一些东西清理了我的会话并将它们设置为零大小。
  • 您的 session.cookie_lifetime 值远小于会话超时。不确定这是否是问题所在,但可以尝试设置相同的值或将其设置为“0”(直到浏览器关闭)blogs.oracle.com/oswald/entry/php_session_gc_maxlifetime_vs
猜你喜欢
  • 2015-12-13
  • 2012-08-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多