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

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

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

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

【问题讨论】:

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

标签: php 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,您可以只在会话超时计时器的一半并且仅在用户活跃时调用它。
猜你喜欢
  • 2012-01-29
  • 1970-01-01
  • 2012-04-11
  • 2012-07-08
  • 2011-07-11
  • 2014-03-26
  • 2019-09-27
相关资源
最近更新 更多