Я ищу способ проверить жизнь php-сессии и вернуть количество секунд, когда сеанс был «жив».PHP: возврат жизни текущей сессии
Есть ли функция php, которую я пропускаю?
Я ищу способ проверить жизнь php-сессии и вернуть количество секунд, когда сеанс был «жив».PHP: возврат жизни текущей сессии
Есть ли функция php, которую я пропускаю?
Я думаю, что существует два варианта, но они не идеальны, но вот они.
1) Если у вас есть доступ к файловой системе, вы можете проверить временную метку создания файла сеанса.
2) Храните время создания в сеансе, например.
session_start();
if(! isset($_SESSION['generated'])) {
$_SESSION['generated'] = time();
}
Вы можете просто сохранить метку, на которой сеанс был создан в сессии
Вы можете сохранить время, когда сеанс был инициализирован и вернуть это значение:
session_start();
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
}
И для извлечения, что информация с произвольной сессии:
function getSessionLifetime($sid)
{
$oldSid = session_id();
if ($oldSid) {
session_write_close();
}
session_id($sid);
session_start();
if (!isset($_SESSION['CREATED'])) {
return false;
}
$created = $_SESSION['CREATED'];
session_write_close();
if ($oldSid) {
session_id($oldSid);
session_start();
}
return time() - $created;
}
Ваш код пахнет мне, потому что вы не возвращаете сеанс жизни! Вы просто возвращаете время, в которое оно было создано, но имя метода - getSessionLifetime(). Вместо этого ваш метод следует называть getSessionStartTime() или изменить метод для вычисления фактического прошедшего времени. – RibaldEddie
Вы правы, спасибо. – Gumbo
Кроме того, не беспокойтесь о возврате false. ЕСЛИ вы собираетесь рассчитать время жизни сеанса, а затем возвратите ноль, так как сеанс был жив для единиц нулевого времени. ЕСЛИ вы собираетесь получать время начала сеанса и сеанс является новым, тогда вы захотите вернуть time(). – RibaldEddie
Ваш пример будет отменять значение для каждого запроса. – Gumbo
Вы правы, я только демонстрировал идею не в реализации. –