PHP - 自动销毁会话而不调用PHP页面

时间:2016-10-30 06:39:12

标签: php web-services api session session-cookies

是否可以在PHP中自动销毁会话,而无需在PHP页面中手动检查会话。

我已经搜索了这个,但是答案导致我手动销毁会话。

我需要这个自动概念,因为现在我正在电报上创建一个简单的机器人来检查房间是否过期。或者玩家已达到其最大时限以回答问题(例如5秒)。

我还发现了一个概念,即使用每秒设置的cron作业来检查每个用户或玩家的会话。但我认为,如果我将它设置为每秒钟,它将消耗如此多的内存,我认为超时也不会是精确的。

如果你们中的一些人可以分享任何见解,我会很高兴。

谢谢guya

2 个答案:

答案 0 :(得分:1)

只需在您希望时钟开始的请求期间在会话中存储时间戳(例如:向用户显示问题时)。例如:

$_SESSION['time'] = time();

任何时候玩家随后向您的服务器发出请求,请将会话的时间戳与当前时间戳进行比较。如果超过时间限制,请返回一条消息,说明时间已过。这样做:

if(time() - $_SESSION['time'] > 5)
{
    // Time's up!
}

如果你这样做,就不需要在后台运行一个cron作业,就像你想到它一样,你需要检查时间是否到期是用户试图提交响应的时间。你要么接受,要么不接受。如果用户没有提交任何内容,那么通过其他方法将其过期并没有真正的意义。

您可能也希望在Javascript中实现计时器,这样您就可以向用户显示他们的时间已过期。这将是更好的用户体验。因此Javascript中的计时器将通知用户,上面描述的$ _SESSION方法将在服务器端强制执行它。

答案 1 :(得分:0)

您可以使用条件语句和PHP unix时间戳的组合。