LZ3G – Webmaster Blog! php, Mysql, JQuery, Java, Wordpress

MySQL olay zamanlayıcısı

MySQL olay zamanlayıcısı (event scheduler) periyodik olarak veya sadece 1 kez tetiklenebilir olayları planlamak için kullanılır. Olay zamanlayıcısı Mysql’e 5.1.6 sürümünde eklenmiştir. Dolayısıyla alt sürümlerde desteklenmez.

Olay zamanlayıcısını Unix’te bulunan cron job (zamanlanmış görev) gibi düşünebilirsiniz.

Varsayılan olarak olay zamanlayıcısı devre dışıdır. Yine de kontrol etmek isterseniz:

SHOW PROCESSLIST;

Sorgusunu çalıştırın. Eğer sorgu sonucunda event_scheduler görüyorsanız olay zamanlayıcısı aktiftir. Göremiyorsanız devre dışıdır. Olay zamanlayıcısını etkinleştirmek için:

SET GLOBAL event_scheduler = ON;

Sorgusunu çalıştırabilirsiniz. Olay zamanlayıcısını etkinleştirdikten sonra SHOW PROCESSLIST sorgusunu tekrar çalıştırırsanız işlem listesinde event_scheduler kısmını göreceksiniz.

Olay zamanlayıcısını kapatmak için:

 SET GLOBAL event_scheduler = OFF;

Sorgusunu çalıştırabilirisiniz.

Yeni bir etkinlik oluşturmak ve planlamak için CREATE EVENT söz dizimi kullanılır.

CREATE EVENT ekle
ON SCHEDULE at current_timestamp
DO
insert into veri(metin,tarih) values('Event testi',NOW());

Buradaki “ekle” olayımızın adıdır. “ON SCHEDULE” sözcüğünden sonra kullandığımız “at” olayı sadece bir kere çalıştırır. Olayı belirli zaman aralıklarında çalıştırmak için “every” kullanılır. ” current_timestamp” şu anki zamanı temsil eder. “Do” sözcüğünden sonra da çalıştırılacak olan sql cümleciği yazılır.

Olay zamanlayıcısı çeşitli ayarlarla oluşturulabilir.

Belirli bir tarih/zamanda olayı bir kez çalıştırmak: at “2015-02-14 20:15:10” (YYYY-MM-DD HH:MM:SS)

CREATE EVENT temizle
ON SCHEDULE at '2016-01-01 00:00:00'
DO
delete from mesajlar where mesajTarih < DATE_SUB(NOW(), INTERVAL 1 WEEK);

Yukarıda oluşturduğumuz “temizle” isimli olay 2016 yılbaşı gecesi sadece bir kez çalışacaktır.