PHP と MySQL にエントリが挿入されてから 24 時間後に有効期限が切れるテーブルを作成したいと考えています。
理想的には、ユーザーがサーバーとやり取りするたびに、古いエントリを削除する「削除プロセス」を実行したいと考えています。これはより頻繁に行われるため、大量のデータを削除する必要はなく、数ミリ秒しかかからないはずです。
各エントリに日付/時刻の付加価値を与えました。
どうすればいいですか?
次のいずれかの MySQL のイベント スケジューラを使用できます。
有効期限が切れたときにそのようなレコードを自動的に削除するには:
CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR DO
DELETE FROM my_table WHERE id = 101;
期限切れのすべてのレコードの自動パージを定期的に実行するには:
CREATE EVENT delete_all_expired
ON SCHEDULE EVERY HOUR DO
DELETE FROM my_table WHERE expiry < NOW();
DELETE FROM table WHERE added < FROM_UNIXTIME(UNIX_TIMESTAMP()-24*60*60)
EXPLAIN
( MySQL マニュアル)