Heim > Backend-Entwicklung > PHP-Tutorial > Arbeiten mit MySQL -Ereignissen

Arbeiten mit MySQL -Ereignissen

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-03-01 08:48:11
Original
829 Leute haben es durchsucht

Working with MySQL Events

Kernpunkte

  • MySQL-Ereignisse, die seit MySQL 5.1.6 eingeführt wurden, sind ein Zeitauslöser, der für einmalige oder periodische Ausführung geplant werden kann und eine Alternative zu geplanten Aufgaben und Cron-Jobs bietet. Sie können verwendet werden, um Sicherungen zu erstellen, veraltete Datensätze zu löschen oder Berichtsdaten usw. zusammenzufassen.
  • MySQL Event Scheduler ist ein Hintergrundprozess, der ständig nach Ereignissen sucht. Es kann mit der Ausgabe des Befehls 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.
  • Beim Erstellen eines Ereignisses beachten Sie bitte, dass Ereignisse nur Vorgänge ausführen können, die der MySQL -Benutzer, der das Ereignis erstellt hat, Ausführungsberechtigungen verfügt. Die Länge des Ereignisnamens ist auf 64 Zeichen begrenzt und sollte von Fall unempfindlich und einzigartig sein. Ereignisse können nicht von einem anderen Ereignis erstellt, geändert oder gelöscht werden, und gespeicherte Funktionen oder benutzerdefinierte Funktionen können beim Einrichten von Ereignisplänen nicht verwiesen werden.
  • MySQL -Ereignisse können in realen Szenarien verwendet werden, z. B. in der Planung eines Blog -Beitrags. Durch die Verwendung von MySQL -Ereignissen, die bei der Veröffentlichung eines Artikels ausgelöst werden, können Sie die Veröffentlichung eines Blog -Beitrags effektiv verwalten, ohne dass ineffiziente Cron -Skripte erforderlich sind. Ereignisse können beim Hinzufügen eines Blogeintrags zur Datenbank erstellt werden. Wenn Sie später einen Blog-Beitrag bearbeiten, können Sie das Ereignis löschen und die Veranstaltung mit einer neuen geplanten Zeit neu anpassen.

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

starten

Der 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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In ähnlicher Weise können Sie alle Ereignisse verwenden:

mysql> SET GLOBAL event_scheduler = OFF;
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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:

  • Ereignisname Länge ist auf 64 Zeichen begrenzt.
  • Beginnend mit MySQL 5.1.8 sind die Ereignisnamen in der Fall-Unempfindlichkeit. Jeder Ereignisname sollte in Fall-Unempfindlichkeit eindeutig bleiben.
  • Ereignisse können nicht von einem anderen Ereignis erstellt, geändert oder gelöscht werden.

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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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;
Nach dem Login kopieren
Nach dem Login kopieren

Ereignisse werden nach Ablauf automatisch gelöscht, es sei denn ON COMPLETION

In diesem Beispiel bleibt es in der Datenbank, auch wenn das Ereignis abgelaufen ist, sodass Sie es später ändern und erneut ausführen können, oder Sie möchten es möglicherweise nur als Referenz behalten. Um Ereignisse selbst dauerhaft zu löschen, können Sie
mysql> SHOW PROCESSLIST
...
     Id: 79
   User: event_scheduler
   Host: localhost
     db: NULL
Command: Daemon
   Time: 12
  State: Waiting on empty queue
   Info: NULL
Nach dem Login kopieren
Nach dem Login kopieren
:

verwenden DROP EVENT

Um ein periodisches Ereignis anzugeben, können Sie die
DELIMITER |

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |

DELIMITER ;
Nach dem Login kopieren
-Klausel verwenden:

EVERY

Anstatt das Ereignis nur einmal oder für immer auszuführen, können Sie auch ein regelmäßiges Ereignis planen, das nur für einen bestimmten Zeitraum gültig ist, wobei die
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
Nach dem Login kopieren
und

Klauseln verwendet werden: START END

In diesem Beispiel beginnt ein regelmäßiges Ereignis morgen und läuft für ein Jahr pro Stunde. In Bezug auf das Timing kann das angegebene Intervall Jahr, Monat, Woche, Tag, Stunde, Minute oder zweite sein. Denken Sie daran, dass Schlüsselwörter in singulärer Form angegeben sind.
CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    ON COMPLETION PRESERVE
    DO
      BEGIN
        UPDATE mytable SET mycol = mycol + 1;
      END |
Nach dem Login kopieren

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:

verwenden
DROP EVENT myevent;
Nach dem Login kopieren

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 |
Nach dem Login kopieren

RENAME

Blog -Beitragsplan
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 |
Nach dem Login kopieren

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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage