增加PHP中的会话超时[重复]

Posted

技术标签:

【中文标题】增加PHP中的会话超时[重复]【英文标题】:Increase session timeout in PHP [duplicate] 【发布时间】:2018-06-20 10:53:52 【问题描述】:

我正在使用php建立一个在线测试平台。问题在于较长的测试时间超过 60 分钟。在我的系统中,用户登录并进行测试。很多时候用户在提交测试答案的时候,发现自己已经下线了。

似乎由于用户的空闲系统,会话 ID 正在被破坏。如何出席?

我不想在这段时间之后将变量发送到垃圾中,而是想确保在这段时间内它们不会被发送到垃圾中。

【问题讨论】:

请澄清您的具体问题或添加其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 问题是如何增加SESSION变量被发送到垃圾的时间 我不想在这段时间之后将变量发送到垃圾中,而是想确保在这段时间内它们不会被发送到垃圾中。 【参考方案1】:

// 试试这个。

ini_set('session.gc_maxlifetime', 10800);    # 3 hours
session_set_cookie_params(10800);

https://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session/

【讨论】:

我已经尝试过了,但不起作用。我觉得 session.gc_maxlifetime 实际上设置了 maxlifetime 而不是最小生命周期。还是我在某个地方错了 发布你的代码,我会检查并更新你 我试过这个 ini_set('session.gc_maxlifetime', 3600);将其设置为一小时 检查我的更新答案。【参考方案2】:

我猜你可以每隔几分钟向服务器发送一个 ajax 调用来保持连接。

这样用户的会话在测试答案被提交之前不会过期!

function stayAlive()
$.ajax(
   url: 'theURL',
   type: 'post',
   data: 'can also send data',
   success: function() /* now you are sure the connection is there */ 
);
setTimeout(stayAlive, 60000); // make the call every minute


stayAlive();

【讨论】:

这似乎是个好主意,但有没有可能是系统问题? 唯一的问题是您从服务器断开连接并在会话到期后重新连接。否则,它可以正常工作,因为您每隔几分钟发送一次此呼叫! 一个聪明的想法,而不是每分钟调用一次 aJax,您可以只在会话超时计时器的一半并且仅在用户活跃时调用它。

以上是关于增加PHP中的会话超时[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP会话默认超时[重复]

PHP会话超时脚本[重复]

由于不活动而导致会话超时[重复]

如何在opencart中延长会话超时[重复]

PHP 会话超时

cakephp 3如何增加会话超时