我试图在会话超时前5分钟运行一个功能。我的配置文件中的会话超时设置为7,200。是否可以使用CodeIgniter执行此操作?
答案 0 :(得分:10)
我认为你正在寻找这样的东西:
$lastActivity = $this->session->userdata('last_activity');
$timeOut = time() - 7200 + 300; // now minus the the session
// timeout plus 5 minutes
if ($lastActivity <= $timeOut)
{
/* This runs on or after the "5 minutes before mark", but won't run if the
session has expired. After the session times out, based on the
$config['sess_expiration'] var, it's destroyed, as pointed out by
coolgeek. */
// ... Do some stuff
}
您可能希望在钩子(see the hook docs here)内部运行它,以便它在运行控制器之前或之后的每个页面加载上运行,具体取决于您要执行的操作。
答案 1 :(得分:2)
如果在超时期限内没有请求(页面点击),则会话超时。因此,php解决方案无法解决问题。
您需要在页面中放置一个javascript计时器,该计时器将从请求页面开始倒计时,并在达到(超时 - 5分钟)阈值时执行一些操作。