Как удалить строку MySQL через время? - PullRequest
14 голосов
/ 26 марта 2012

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

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

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

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

Ответы [ 6 ]

19 голосов
/ 26 марта 2012

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

Пример:

cronjobcommand.php

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

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

enter image description here

4 голосов
/ 15 апреля 2014

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

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

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

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

3 голосов
/ 10 июня 2015

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

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

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

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW())
)
2 голосов
/ 26 марта 2012

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

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

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

# m h  dom mon dow   command

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

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

0 0 * * * /path/to/executable

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

0 голосов
/ 26 марта 2012

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

0 голосов
/ 26 марта 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...