Nie mniej temat dobrze rokuje a zatem :
Pierw configuracja :
SET GLOBAL event_scheduler = 1/0 (ON/OFF)
Mozna tez dopisac na stałe do configu.
Tabela testowa:
CREATE TABLE zdarzenia_test ( id int(10) NOT NULL AUTO_INCREMENT, data timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM
oraz event który będzie wrzucał co 10s wpis :
CREATE EVENT event_first_test ON SCHEDULE EVERY 10 SECOND DO insert into zdarzenia_set set data=now()wszystko smiga :
mysql> select * from zdarzenia_test order by data desc limit 3; +-----+---------------------+ | id | data | +-----+---------------------+ | 209 | 2011-12-26 12:22:53 | | 208 | 2011-12-26 12:22:43 | | 207 | 2011-12-26 12:22:33 | +-----+---------------------+ 3 rows in set (0.00 sec)
Dobra ale co gdy jakaś akcja się nie uda ?
mysql> drop table zdarzenia_test; Query OK, 0 rows affected (0.00 sec)Informacja idzie do error loga :
111226 12:24:33 [ERROR] Event Scheduler: [root@localhost][test.event_first_test] Table 'test.zdarzenia_test' doesn't exist 111226 12:24:33 [Note] Event Scheduler: [root@localhost].[test.event_first_test] event execution failed.Wszystko fajnie tyle, tylko pewnie nie kazdy lubi sobie czytac error loga wieczorami; )
Zdecydowanie brakuje jakieś możliwosci w stylu wyslij maila (cos na wzor schedule'ra w MSSQL).
Oczywiscie mozemy sobie to jakos obsluzyc skryptowo ale przydałaby sie jakas funkcja systemowa.
Nie mniej jednak sam feature jest dosyc fajny. Nie sadze, zeby szybko zastąpił skrypt w cronie jednak do przeliczania
nie krytycznych danych,czyszczenia tabel nadaje się idealnie.
Oczywiscie to tylko zarys. Istnieje dużo więcej możliwosci konfiguracji (data startu,zakonczenia etc)
Zachęcam do lektury ; )
http://dev.mysql.com/doc/refman/5.1/en/alter-event.html
Brak komentarzy:
Prześlij komentarz