增加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中的会话超时[重复]的主要内容,如果未能解决你的问题,请参考以下文章