Как создать событие, которое проводится каждые 24 часа? - PullRequest
5 голосов
/ 14 ноября 2009

Мне нужно, чтобы это запускалось каждые 24 часа:

delete tags from tags left join tagowners on tags.id=tagowners.tagId
where tagowners.tagId is null;

Ответы [ 5 ]

15 голосов
/ 14 ноября 2009
CREATE EVENT cleartags
    ON SCHEDULE EVERY 24 HOUR
    DO 
      delete tags from tags left join tagowners on tags.id=tagowners.tagId
    where tagowners.tagId is null;
4 голосов
/ 21 января 2013

Выполните это первым в SQl Query Browser

SET GLOBAL event_scheduler = ON;

затем выполните это. Он будет срабатывать каждые 24 часа в 12:00

CREATE EVENT event1
  ON SCHEDULE EVERY '1' DAY
  STARTS '2013-01-21 00:00:00'    
DO 
delete tags from tags left join tagowners on tags.id=tagowners.tagId
    where tagowners.tagId is null;
0 голосов
/ 14 ноября 2009

Если вы находитесь на сервере Linux, вы можете создать cronjob, запланированное задание, для выполнения сценария php через исполняемый файл php. Создать задачу cron легко, выполните crontab -e через оболочку, затем добавьте свою команду в конец файла.

Пример записей cron, взятых из http://mkaz.com/ref/unix_cron.html

#Run command at 7:00am each weekday [mon-fri]
00 07 * * 1-5 mail_pager.script 'Wake Up'

#Run command on 1st of each month, at 5:30pm
30 17 1 * * pay_rent.script

#Run command at 8:00am,10:00am and 2:00pm every day
00 8,10,14 * * * do_something.script

#Run command every 5 minutes during market hours
*/5 6-13 * * mon-fri get_stock_quote.script

#Run command every 3-hours while awake
0 7-23/3 * * * drink_water.script 

Если вы хотите запускать php-скрипт один раз в день ...

0 0 * * * /path/to/php.exe myscript.php

Помните, что вы выполняете скрипт через CLI, поэтому суперглобальные переменные $_GET / $_POST / $_SERVER не существуют (вы можете обойти это, используя wget).

Если вы работаете в Windows, вы можете использовать планировщик задач Windows, чтобы выполнить то же самое.

0 голосов
/ 14 ноября 2009

С крон :

mysql -uUSER -pPWD -hDB-HOSTNAME/IPADDRESS -e "delete tags from tags left join tagowners on tags.id=tagowners.tagId where tagowners.tagId is null;"
0 голосов
/ 14 ноября 2009

Работает в системе Linux? Используйте cron. Я не думаю, что MySQL имеет встроенную функциональность для достижения этой цели.

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