PHP хранит некоторые данные в MySQL в течение x часов (ограниченное время)

Как можно хранить данные в базе данных в течение ограниченного времени (например, 1 час)?

Пользователь ищет определенную вещь, логика выполняется на стороне сервера, и результат поиска загружается. Когда результат загружен, я хочу сохранить его в MySQL и хранить только x часов. Через x часов эти данные должны быть удалены из базы данных.

Как это можно сделать в Laravel или в PHP (это не имеет значения для меня. Я только что упомянул о Laravel, поскольку у него могут быть некоторые библиотеки для этого)? Речь идет о написании логики в SQL или в задаче PHP?

Как это сделать? Любые предложения / ссылки / решения?

Большое спасибо!

0

Решение

Речь идет о написании логики в SQL или в задаче PHP?

Делать это с php будет хлопотно, потому что вам всегда нужно будет отправлять запросы, чтобы проверить, не истек ли срок записи, а затем отправлять другую для удаления. Это может быть достигнуто с помощью events в mysql, Я наткнулся на это сообщение в блоге, которое может быть полезным.

Также не забудьте проверить mysql страница документации

1

Другие решения

Помечайте записи меткой времени истечения и выполняйте задание cron каждую минуту (или любую другую частоту), чтобы удалить записи с истекшим сроком.

1

Лучшим решением для этой задачи будет использование базы данных Redis. Есть 2 драйвера для PHP: pRedis а также phpRedis.

pRedis это реализация, написанная на PHP, которая работает относительно медленно для большого количества пользователей.

phpRedis Драйвер написан на С, и он работает намного быстрее.

Использовать $ redis-> psetex ($ key, $ destroy_time, $ value) функция для создания самоуничтожающихся записей. Надеюсь, это поможет кому-нибудь в будущем

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector