php как выполнить функцию по тайм-ауту сессии - PullRequest
4 голосов
/ 24 июня 2011

У меня есть $_SESSION переменные, содержащие имя пользователя для входа в систему, с установленным временем жизни сеанса по умолчанию (думаю, 24 минуты). Мне интересно, есть ли способ выполнить функцию по тайм-ауту сеанса.

Я знаю, что могу сказать странице, чтобы она выполняла функцию, когда пользователь перезагружает страницу, а срок действия переменной сеанса истек, но я пытаюсь найти способ, которым сервер может сделать это сам по себе. Есть ли такой способ?

My Reasoning : Когда пользователь входит в систему, я отчитываюсь в своей базе данных и обновляю запись пользователя для 'lastlogin'. Я хочу обновить «lastlogout», когда пользователь нажимает кнопку «Выйти» или когда срок действия переменной $_SESSION истекает.

Ответы [ 2 ]

5 голосов
/ 24 июня 2011

Попробуйте настроить обратные вызовы в session_set_save_handler при закрытии и gc (сборщик мусора).

0 голосов
/ 24 июня 2011

Вы можете использовать javascript для этого примерно так:

<?php

...
$currentTimeoutInMillis = ini_get(’session.gc_maxlifetime’) * 1000;

print "<script type='text/javascript'>\n";
print "<!--\n";
print "setTimeout('window.location.href=\"timeout.php\"', $currentTimeoutInMillis);\n";
print "//-->\n";
...

?>

Тогда ваш timeout.php будет вызван автоматически по истечении времени ожидания. В этом сценарии к этому времени содержимое $ _SESSION уже потеряно (собрано мусором) - и вы можете выполнять вызовы из базы данных, чтобы обновить запись пользователя.

...