Wenn große Webservices betrieben werden, müssen fast immer Cronjobs laufen, um automatisiert regelmäßige
Datenbankaufgaben abzuarbeiten. In der Regel wird dazu ein (PHP-) Script geschrieben, dass regelmäßig durch einen Cronjob gestartet wird und anschließend eine Verbindung zur Datenbank aufbaut. Oft vergessen wird die in MySQL eingebaute Event Scheduler Funktionalität.

Doch wie funktioniert der MySQL Event Scheduler?

Ganz einfach: Zu erst muss die Funktion eingeschaltet werden:

    SET GLOBAL event_scheduler = ON;

Anstatt von “ON” kann man auch eine “1” schreiben. Jetzt ist die MySQL Event Scheduler aktiviert.

Als Nächstes wird ein neuer Event angelegt:
Möchten man beispielsweise jeden Tag den zu diesem Zeitpunkt veralteten (äter als 10 Tage) Cache löschen, so kann das folgende MySQL-Statement helfen.

    CREATE EVENT Ereignis
    ON SCHEDULE EVERY 1 DAY
    DO
    DELETE FROM cache WHERE created_date < = DATE_SUB(NOW(), INTERVAL 10 DAY) ;

Hinweis: die Funktion DATE_SUB zieht von einem Datum eine bestimmte Zeit ab, hier 10 Tage.

Ereignisse können natürlich auch geändert oder gelöscht werden:
Alter Event

    ALTER Ereignis
    ON SCHEDULE EVERY 5 HOUR
    STARTS TIMESTAMP + 3 HOUR
    Drop Ereignis

Möchte man alle aktuellen Ereignisse auflisten, so kann man die MySQL-Funktion:

    SHOW EVENTS;

Vorteile gegenüber der Cronjob-Variante

  • Es besteht keine Abhängigkeiten zum (möglicherweise externen) Cronjobanbieter.
  • Für das (PHP) Script muss kein Webserver installiert sein