在页面加载时重置$ SESSION到期计时器

时间:2013-10-08 02:30:25

标签: php session login

ini_set('session.cookie_lifetime', 259200);
ini_set('session.gc_maxlifetime', 259200);
session_start();

我的网站上的每一页都包含上面的代码。我希望用户在登录后让用户登录三天,但是如果他们在到期日之前访问该网站,则会让他们再活三天。基本上,会话从他们离开网站三天后就会保持活动状态(如果他们在这三天内没有返回)。

然而,我注意到会话保持活动了大约一天,然后尽管上面有ini_set我死了。我认为也许这是我的webhost的php.ini,但它也在我的本地机器上执行此操作。

我可以做一些其他的ini_set电话来达到我想要的效果吗?这些似乎不起作用,虽然它们确实可以保持一天。

1 个答案:

答案 0 :(得分:1)

随着会话的大小变大,你会遇到各种怪癖:不确定当前版本,但PHP 5.1.x在session_start()时将整个会话加载到内存中;使用20 MB会话和50个并发用户,您的脚本开始受到磁盘访问速度的严重限制(也就是“脚本启动速度慢如糖蜜” - 仅会话占用GB的RAM,您绝对不需要服务器开始交换);最后,我们专门用一个盒子在RAM中保存尽可能多的会话,前端盒通过NFS访问它们(尽管在我们的情况下这对你有帮助,但这对你来说可能有点过分了。)

请注意,对于磁盘上的许多并发用户和会话存储,会话临时文件的数量可能会导致文件系统限制问题(例如,一个目录中可以有多少文件)或其他限制(我们曾经发现很难一个框配置为只允许同时打开4096个文件)。这些都不是特定于会话的,但可以通过会话处理来触发。