2015-12-30 2 views
1

Что я делаю?Войти в системный магазин сеансов в базе данных

Я разрабатываю систему входа для своего собственного сайта, когда люди регистрируются в сеансе session_token и сохраняются с использованием сеансов PHP. Сгенерированный session_token также будет вставлен в таблицу базы данных вместе с зарегистрированным идентификатором пользователя и временем и временем session_expire.

Каждый раз, когда пользователь возвращается на мой сайт, он проверяет, существует ли session_token и не истек, в таблице базы данных сеансов.

Вопрос

Как я могу предотвратить мою таблицу сессий от получения полной истекших session_tokens? Я не хочу запускать cron_job для удаления истекших сессий каждые x минут.

+0

Сделайте идентификатор пользователя 'UNIQUE KEY'' в вашей таблице базы данных. Затем, когда «session_token» истек, и вы создаете новый 'session_token', вы обновляете строку этого пользователя. Тогда у вас будет только 1 строка на пользователя. – Sean

+0

Моя цель - иметь несколько сеансов для каждого пользователя, так как у меня есть учетные записи, которые используются более чем одним человеком за раз. –

+0

Вы хотите избежать cron вообще, или вы просто обеспокоены тем, что он работает часто? Как быстро эта таблица заполнится? Кажется, каждые несколько минут может быть излишним для частоты работы cron для этой цели. –

ответ

0

Без использования задания cron вы можете использовать MySQL Event Scheduler, или когда вы идете проверить и посмотреть, истек ли токен или нет, вы можете удалить его, если он уже истек.

+0

Вы имеете в виду каждый раз, когда какой-либо сеанс проверяется, выполните запрос для удаления истекших сеансов? –

+1

Поскольку вы не хотите использовать работу cron, это, вероятно, лучший способ сделать это. Всякий раз, когда вы проверяете, действительно ли текущий, проверьте, есть ли у вас другие истекшие. Однако, если эта операция выполняется много, вы обнаружите, что она может замедлить ваш сценарий больше, чем если бы вы просто использовали работу cron каждые X минут/секунд. – bhooks

+0

Спасибо за ваш ответ, я буду искать дальнейшие варианты, но вы ответили на часть моего вопроса. –

Смежные вопросы