Как удалить строку mysql после прохода времени?

Я не знаю, с чего начать с этого:

У меня есть база данных, в которой хранятся postID и Date.

Я хочу, чтобы мой сайт автоматически удалял все строки, где Date меньше, чем сегодня. Этот script не может иметь никакого пользовательского ввода вообще. Никаких щелчков кнопки, ничего. script должен запускаться каждый день в полночь.

Я искал повсюду что-то, что делает это, и я ничего не нашел.

Ответ 1

Вы можете использовать PHP script и использовать работу cron на своем cpanel.

Пример:

cronjobcommand.php

<?php 
 include 'your_db_connection';
 mysql_query("DELETE FROM your_table_name WHERE Date < NOW()");
?>

Я добавил скриншот ниже для более подробной информации.

enter image description here

Ответ 2

Для тех, кто находится на общем хостинге, например 1and1, и не может использовать cron, вот 2 альтернативы:

  • события mysql позволяют размещать триггер времени на mysql, который будет выполняться, когда вы захотите, без необходимости с помощью любого пользовательского ввода

  • если вы не можете создавать события mysql, потому что вы используете 1 и 1:(, альтернативой является использование webcron

Вам просто нужно указать webcron URL-адрес php script, который вы хотите запустить, и они будут запускать его для вас с интервалами, которые вы хотите

Ответ 3

Почему использование cronjobs каждый день? Почему бы не фильтровать данные на выходе. Например, в выбранной вами проверке, если дата публикации равна сегодняшнему значению с добавлением простого where:

SELECT * FROM `posts`
WHERE (DATE(`post_date`) = DATE(NOW()));

Таким образом, вы не требуется, чтобы выполнять управление вашей картой /cronjobs в любое специальное время, и это будет использоваться только для управления базами данных. Впоследствии вы можете удалить ненужные данные в любое время с помощью команды mysql, например:

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW())
)

Ответ 4

Большинство хостов предоставляют службу cron(8), которая может выполнять команды в определенное время. Вы используете программу crontab(1) для управления файлом crontab(5), который описывает, когда запускать команды.

Существует много функциональных возможностей, но если вы пишете программу (shell script, PHP скрипт, программа на C, независимо), которая запускает соответствующие команды MySQL, вы можете вызвать программу через cron(8) в полном отключении.

Запустите crontab -e, чтобы отредактировать текущий файл crontab(5). Если ничего не существует, надеюсь, вы получите один с полезным заголовком. Если нет, скопируйте это:

# m h  dom mon dow   command

В столбцах указаны минуты, час, день месяца, месяц и день недели для выполнения команд. Все числа в столбцах по существу совпадают вместе, чтобы решить, когда запускать команды.

Таким образом, полночь каждую ночь будет выглядеть так:

0 0 * * * /path/to/executable

Это замечательно гибко, поэтому поместите некоторое время в документацию, и вы найдете много применений для нее.

Ответ 5

Вы должны установить для него задание cron (запланированный лад.).

A cron job - это автоматическая настройка программы для операционных систем Linux и Unix. Он позволяет пользователю выполнять несколько команд или функций в определенное время и дату.

У вас есть cron Job в настройке cpanel. сначала вам нужно сделать php script с вашей логикой для удаления записи после каждой даты. взять дату с сервера и написать script для удаления.

затем перейдите на вкладку cron в вашей cpanel и выполните настройки для временного интервала для запуска cron и укажите путь к файлу php script.

Ответ 6

В MySQL нет планировщика задач. Таким образом, вы должны использовать планировщик задач своей операционной системы (CRON под Linux) или обедать базовым контролером задач script во время script главной страницы (на другой странице, которая должна отображать изменяющиеся данные).