Как можно хранить данные в базе данных в течение ограниченного времени (например, 1 час)?
Пользователь ищет определенную вещь, логика выполняется на стороне сервера, и результат поиска загружается. Когда результат загружен, я хочу сохранить его в MySQL и хранить только x часов. Через x часов эти данные должны быть удалены из базы данных.
Как это можно сделать в Laravel или в PHP (это не имеет значения для меня. Я только что упомянул о Laravel, поскольку у него могут быть некоторые библиотеки для этого)? Речь идет о написании логики в SQL или в задаче PHP?
Как это сделать? Любые предложения / ссылки / решения?
Большое спасибо!
Речь идет о написании логики в SQL или в задаче PHP?
Делать это с php
будет хлопотно, потому что вам всегда нужно будет отправлять запросы, чтобы проверить, не истек ли срок записи, а затем отправлять другую для удаления. Это может быть достигнуто с помощью events
в mysql
, Я наткнулся на это сообщение в блоге, которое может быть полезным.
Также не забудьте проверить mysql
страница документации
Помечайте записи меткой времени истечения и выполняйте задание cron каждую минуту (или любую другую частоту), чтобы удалить записи с истекшим сроком.
Лучшим решением для этой задачи будет использование базы данных Redis. Есть 2 драйвера для PHP: pRedis а также phpRedis.
pRedis это реализация, написанная на PHP, которая работает относительно медленно для большого количества пользователей.
phpRedis Драйвер написан на С, и он работает намного быстрее.
Использовать $ redis-> psetex ($ key, $ destroy_time, $ value) функция для создания самоуничтожающихся записей. Надеюсь, это поможет кому-нибудь в будущем