Как правильнее удалять устаревшие сессий из базы данных?
В базе данных хранятся id сессий.
Как правильнее удалять устаревшие записи из БД?
Сейчас есть идея удалять их через крон, раз в сутки запускать скрипт, который удалит все записи старше одного дня.
Но такие движки, как joomla, wp, и т.д. не используют крон, как они удаляют устаревшие записи в бд?
Никто не мешает движку "изредка" удалять старые сессии при генерации очередной запрошенной страницы.
Это не очень хорошо, но возможно, однако лучше делать по расписанию.
Но такие движки, как joomla, wp, и т.д. не используют крон
Drupal использует крон. Другой вопрос, настоящий ли это крон или просто раз в x часов при заходе очередного юзера на сайт в php коде выполняются запланированные задачи.
В Drupal есть 2 разных "cron". Один - нормальный, когда он запускается через обычный cron и иногда через cron+drush. Другой - выполняется при заходе пользователя, т.н. "automated cron", есть даже похожий модуль в контрибе - типа крон для бедных.
в таблице сессии хранится дата создания записи, при посещении страниц сайта удаляются все которые старше определенного времени (текущее время - интервал), интервал регулируется (2ч,6ч, 1д и т.д). Такая схема используется в Codeigniter.