Kernpunkte
SET GLOBAL event_scheduler = ON;
gestartet werden und kann mit SET GLOBAL event_scheduler = OFF;
geschlossen werden. Sein Status kann in der MySQL -Prozessliste angezeigt werden. MySQL -Ereignisse wurden in MySQL 5.1.6 hinzugefügt und bieten eine Alternative zu geplanten Aufgaben und Cron -Jobs. Ereignisse können zum Erstellen von Backups, zum Löschen von veralteten Datensätzen, zum Zusammenfassen von Berichtsdaten und mehr verwendet werden. Im Gegensatz zu Standardtriggern, die gemäß bestimmten Bedingungen ausgeführt werden, ist ein Ereignis ein von Zeitlager ausgelöster Objekt, manchmal als Zeitauslöser bezeichnet. Sie können Ereignisse planen, die einmal oder regelmäßig ausgeführt werden können, wenn der Serververkehr niedrig ist. In diesem Artikel werde ich erklären, was Sie wissen müssen, um mit Ereignissen zu beginnen: Starten Sie den Event-Scheduler, fügen Sie einmalige oder mehrere Run-Ereignisse hinzu, anzeigen Sie vorhandene Ereignisse und ändern Sie Ereignisse. Ich werde auch mitteilen, wie Sie einen geplanten Blog -Beitrag als praktisches Beispiel verwenden, um MySQL -Ereignisse zu verwenden.
Ereignisplaner
startenDer MySQL -Event -Scheduler ist ein Prozess, der im Hintergrund ausgeführt wird und ständig nach Ereignissen sucht, die ausgeführt werden sollen. Vor dem Erstellen oder Planen eines Ereignisses müssen Sie den Scheduler zuerst öffnen, indem Sie den folgenden Befehl ausgeben:
mysql> SET GLOBAL event_scheduler = ON;
In ähnlicher Weise können Sie alle Ereignisse verwenden:
mysql> SET GLOBAL event_scheduler = OFF;
Nach dem Start des Event -Schedulers können Sie seinen Status in der MySQL -Prozessliste anzeigen.
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
Verwendung Ereignisse
Es ist zu beachten, dass der MySQL -Benutzer, der das Ereignis erstellt hat, beim Erstellen eines Ereignisses nur Vorgänge ausführen kann. Einige andere Einschränkungen sind:
Wenn Ereignispläne, gespeicherte Funktionen oder benutzerdefinierte Funktionen festgelegt werden, können nicht verwiesen werden.
Erstellen Sie Ereignis
Das folgende Beispiel erstellt ein Ereignis:
mysql> SET GLOBAL event_scheduler = ON;
Dieses Ereignis wird einmal, eine Stunde nach dem Zeitpunkt des Ereignisses erstellt. Die Aussagen BEGIN
und END
drehen sich um eine oder mehrere Abfragen, die zu einem bestimmten Zeitpunkt ausgeführt werden. Da ein Semikolon benötigt wird, um die Anweisung UPDATE
zu beenden, müssen Sie den Trennzeichen vor dem Ausgeben der CREATE EVENT
-Antage umstellen und dann zurückschalten. Sie können SHOW EVENTS
eine Liste aller vorhandenen Ereignisse verwenden.
mysql> SET GLOBAL event_scheduler = OFF;
Ereignisse werden nach Ablauf automatisch gelöscht, es sei denn
ON COMPLETION
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
verwenden
DROP EVENT
DELIMITER | CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END | DELIMITER ;
EVERY
mysql> SHOW EVENTS ********************** 1. row ********************** Db: mysql Name: myevent Definer: dbuser@localhost Time zone: SYSTEM Type: ONE TIME Execute At: 2011-10-26 20:24:19 Interval Value: NULL Interval Field: NULL Starts: NULL Ends: NULL Status: ENABLED Originator: 0 character_set_client: utf8 collation_connection: utf8_general_ci
Klauseln verwendet werden: START
END
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION PRESERVE DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
INTERVAL 5 MINUTE
aktualisieren Ereignis
Wenn Sie das Verhalten eines vorhandenen Ereignisses ändern möchten, anstatt es zu löschen und nachzubilden, können Sie verwenden. Zum Beispiel können Sie den folgenden Befehl verwenden, um den Zeitplan eines früheren Ereignisses einmal im Monat ab 1 Uhr morgens zu ändern:
ALTER EVENT
Um Ereignisse mit verschiedenen Abfragesätzen zu aktualisieren, können Sie:
DROP EVENT myevent;
Um ein Ereignis umzubenennen, können Sie die
-Klausel verwenden:CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
RENAME
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
Um Ihnen ein praktisches Beispiel zu zeigen, nehmen Sie an, Sie haben einen Blog und möchten die Möglichkeit haben, Beiträge zu planen, die zu einem bestimmten Zeitpunkt in der Zukunft veröffentlicht werden sollen. Eine Möglichkeit, dies zu erreichen, besteht darin, dem Datenbankdatensatz einen Zeitstempel und ein Flag hinzuzufügen. Das Cron -Skript wird einmal pro Minute ausgeführt, um den Zeitstempel zu überprüfen und das Flag für alle veröffentlichten Artikel umzuschalten. Aber das scheint ineffizient zu sein. Eine andere Möglichkeit, dies zu tun, besteht darin, das MySQL -Ereignis zu verwenden, das ausgelöst wird, wenn Sie einen Artikel veröffentlichen möchten. Ihr Blog -Eintragsformular hat möglicherweise ein Kontrollkästchen. Wenn Sie es auswählen, ist dies ein geplanter Beitrag. Darüber hinaus enthält das Formular Eingabefelder, damit Sie das Datum und die Uhrzeit des Posts eingeben können, das Sie veröffentlichen sollten. Das empfangende Skript ist verantwortlich für das Hinzufügen des Blogeintrags zur Datenbank und zum Verwalten des Ereignisses, um ihn zu planen (falls es sich nicht um einen Beitrag handelt, der sofort veröffentlicht wurde). Der relevante Code ist wie folgt:
mysql> SET GLOBAL event_scheduler = ON;
Beim Speichern eines Artikels in der Datenbank wird er in einem suspendierten Zustand gespeichert. Auf diese Weise haben Sie die Möglichkeit, eine Veranstaltung zu planen (falls es sich um einen geplanten Beitrag handelt). Andernfalls können Sie den Status sofort aktualisieren. Wenn Sie einen Artikel zu einem späteren Zeitpunkt bearbeiten möchten, können Sie das Ereignis mit DROP EVENT IF EXISTS
löschen und mit der neuen geplanten Zeit neu anpassen.
Zusammenfassung
Sie sollten jetzt ein solides Verständnis dafür haben, was MySQL -Ereignisse sind und wie Sie Ihre eigenen Ereignisse erstellen und verwalten können. Obwohl Ereignisse keine Cron-Jobs oder geplanten Aufgaben ersetzen können, da Ereignisse keinen externen Code (z. B. PHP-Skripte) ausführen können, sind sie nützliche Alternativen zu zeitbezogenen Aufgaben, die für MySQL-Datenbanken spezifisch sind. Lesen Sie wie immer die offizielle Dokumentation, wenn Sie mehr lernen möchten. Bilder von Garsya / Shutterstock
FAQs über die Verwendung von MySQL -Ereignissen (FAQ)
(Der FAQ-Teil wird hier weggelassen, da der Artikel zu lang ist und nicht mit dem pseudooriginalen Ziel übereinstimmt. Der Inhalt des FAQ-Teils ist mit dem Originaltext sehr repetitiv.
Das obige ist der detaillierte Inhalt vonArbeiten mit MySQL -Ereignissen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!