Как удалить строку MySQL через время?

Я понятия не имею, с чего начать:

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

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

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

6 ответов

Решение

Вы можете использовать PHP скрипт и использовать cron job на своей cpanel.

Пример:

cronjobcommand.php

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

Я приложил скриншот ниже для вашей дополнительной ссылки.

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

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

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

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

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

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

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

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

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

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

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

# m h  dom mon dow   command

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

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

0 0 * * * /path/to/executable

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

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

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

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

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

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

Другие вопросы по тегам