Travailler avec les événements MySQL
Points de base
- Les événements MySQL, introduits depuis MySQL 5.1.6, sont un déclencheur de temps qui peut être planifié pour une exécution unique ou périodique, fournissant une alternative aux tâches planifiées et aux travaux CRON. Ils peuvent être utilisés pour créer des sauvegardes, supprimer des enregistrements obsolètes ou résumer les données du rapport, etc.
- MySQL Event Scheduler est un processus de fond qui recherche constamment l'exécution des événements. Il peut être démarré en émettant la commande
SET GLOBAL event_scheduler = ON;
et il peut être fermé en utilisantSET GLOBAL event_scheduler = OFF;
. Son statut peut être affiché dans la liste des processus MySQL. - Lors de la création d'un événement, veuillez noter que les événements ne peuvent effectuer que des opérations que l'utilisateur MySQL qui a créé l'événement a des autorisations d'exécution. La longueur du nom de l'événement est limitée à 64 caractères et doit être insensible à la casse et unique. Les événements ne peuvent pas être créés, modifiés ou supprimés par un autre événement, et des fonctions stockées ou des fonctions définies par l'utilisateur ne peuvent pas être référencées lors de la configuration des planifications d'événements.
- Les événements MySQL peuvent être utilisés dans de vrais scénarios, tels que la planification de publier un article de blog. En utilisant des événements MySQL qui sont déclenchés lorsque vous souhaitez publier un article, vous pouvez gérer efficacement la publication d'un article de blog sans avoir besoin de scripts Cron inefficaces. Les événements peuvent être créés lors de l'ajout d'une entrée de blog à la base de données, et si vous modifiez un article de blog plus tard, vous pouvez supprimer l'événement et réadapter l'événement avec une nouvelle heure programmée.
Les événements MySQL ont été ajoutés dans MySQL 5.1.6 et fournissent une alternative aux tâches et aux travaux CRON planifiés. Les événements peuvent être utilisés pour créer des sauvegardes, supprimer des enregistrements obsolètes, résumer les données de rapport, etc. Contrairement aux déclencheurs standard qui sont exécutés en fonction de conditions spécifiques, un événement est un objet déclenché par le laps de temps, parfois appelé Time Trigger . Vous pouvez planifier des événements pour être exécuté unique ou périodiquement lorsque le trafic du serveur est faible. Dans cet article, je vais expliquer ce que vous devez savoir pour commencer à utiliser des événements: démarrer le planificateur d'événements, ajouter des événements à une ou plusieurs exécutions, afficher les événements existants et changer d'événements. Je vais également partager comment utiliser un article de blog prévu comme exemple pratique pour utiliser les événements MySQL.
Démarrer le planificateur d'événements
Le planificateur d'événements MySQL est un processus qui s'exécute en arrière-plan et recherche constamment des événements à exécuter. Avant de créer ou de planifier un événement, vous devez d'abord ouvrir le planificateur en émettant la commande suivante:
mysql> SET GLOBAL event_scheduler = ON;
De même, pour fermer tous les événements, vous pouvez utiliser:
mysql> SET GLOBAL event_scheduler = OFF;
Après avoir démarré le planificateur d'événements, vous pouvez afficher son statut dans la liste de processus MySQL.
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
Événements d'utilisation
Il convient de noter que lors de la création d'un événement, il ne peut effectuer que des opérations que l'utilisateur MySQL qui a créé l'événement a des autorisations d'exécution. Certaines autres limitations incluent:
- La longueur du nom de l'événement est limitée à 64 caractères.
- En commençant par MySQL 5.1.8, les noms d'événements sont insensibles à la cas; chaque nom d'événement doit rester unique dans le cas. Les événements
- ne peuvent pas être créés, modifiés ou supprimés par un autre événement.
Lors de la définition des horaires d'événements, des fonctions stockées ou des fonctions définies par l'utilisateur ne peuvent pas être référencées.
Créer un événement
L'exemple suivant crée un événement:
mysql> SET GLOBAL event_scheduler = ON;
Cet événement fonctionnera une fois, une heure après la création de l'événement. Les instructions BEGIN
et END
tournent autour d'une ou plusieurs requêtes qui seront exécutées à un moment spécifié. Étant donné qu'un point-virgule est nécessaire pour résilier l'instruction UPDATE
, si vous opérez via le client, vous devez changer le séparateur avant d'émettre l'instruction CREATE EVENT
, puis de revenir. Vous pouvez utiliser SHOW EVENTS
pour afficher une liste de tous les événements existants.
mysql> SET GLOBAL event_scheduler = OFF;
seront supprimés automatiquement après une expiration, sauf si vous déclarez explicitement d'autres situations en utilisant la clause ON COMPLETION
, par exemple:
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
Dans cet exemple, il restera dans la base de données même si l'événement a expiré, ce qui vous permettra de changer et de l'exécuter à nouveau plus tard, ou vous voudrez peut-être le garder pour référence. Pour supprimer en permanence les événements vous-même, vous pouvez utiliser DROP EVENT
:
DELIMITER | CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END | DELIMITER ;
Pour spécifier un événement périodique, vous pouvez utiliser la clause 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
Au lieu de faire fonctionner l'événement qu'une seule ou pour toujours, vous pouvez également planifier un événement périodique qui n'est valable que pendant une période spécifique, en utilisant les clauses START
et END
:
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION PRESERVE DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
Dans cet exemple, un événement périodique commencera demain et se présentera pendant un an toutes les heures. En ce qui concerne le timing, l'intervalle spécifié peut être de l'année, du mois, de la semaine, du jour, de l'heure, de la minute ou du deuxième. N'oubliez pas que les mots clés sont donnés sous forme singulière; d'écrire quelque chose comme INTERVAL 5 MINUTE
peut vous sembler étrange, mais c'est complètement correct pour MySQL.
Mettre à jour l'événement
Si vous souhaitez modifier le comportement d'un événement existant au lieu de le supprimer et de le recréer, vous pouvez utiliser ALTER EVENT
. Par exemple, pour modifier le calendrier d'un événement précédent à fonctionner une fois par mois, à partir de 1 h à une date future, vous pouvez utiliser la commande suivante:
DROP EVENT myevent;
Pour mettre à jour les événements avec différents ensembles de requêtes, vous pouvez utiliser:
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
Pour renommer un événement, vous pouvez utiliser la clause 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 |
Plan des articles de blog
pour vous montrer un exemple pratique, supposons que vous ayez un blog et que vous souhaitez avoir la possibilité de planifier des publications à publier à un moment donné à l'avenir. Une façon d'y parvenir est d'ajouter un horodatage et un drapeau publié à l'enregistrement de la base de données. Le script Cron sera exécuté une fois par minute pour vérifier l'horodatage et basculer le drapeau pour tous les articles qui devraient être publiés. Mais cela semble inefficace. Une autre façon de le faire est d'utiliser l'événement MySQL qui est déclenché lorsque vous souhaitez publier un article. Votre formulaire d'entrée de blog peut avoir une case à cocher, et la sélection signifie qu'il s'agit d'un article prévu. De plus, le formulaire aura des champs d'entrée pour que vous puissiez saisir la date et l'heure de la publication que vous devez publier. Le script de réception sera responsable de l'ajout de l'entrée du blog à la base de données et de la gestion de l'événement pour le planifier (s'il n'est pas publié immédiatement). Le code pertinent est le suivant:
mysql> SET GLOBAL event_scheduler = ON;
Lors du stockage d'un article dans la base de données, il sera enregistré dans un état suspendu. Cela vous donne la possibilité de planifier un événement (s'il s'agit d'un article prévu), sinon vous pouvez mettre à jour le statut de publication immédiatement. Si vous souhaitez modifier un article ultérieurement, vous pouvez supprimer l'événement à l'aide de DROP EVENT IF EXISTS
et le réadapter avec la nouvelle heure prévue.
Résumé
Vous devriez maintenant avoir une solide compréhension de ce que sont les événements MySQL et de la façon de créer et de gérer vos propres événements. Bien que les événements ne puissent pas remplacer les travaux CRON ou les tâches planifiées, car les événements ne peuvent pas exécuter du code externe (tel que les scripts PHP), ce sont des alternatives utiles aux tâches liées au temps spécifiques aux bases de données MySQL. Comme toujours, assurez-vous de lire la documentation officielle si vous souhaitez en savoir plus. images de garsya / shutterstock
FAQ sur l'utilisation des événements MySQL (FAQ)
(La partie FAQ est omise ici parce que l'article est trop long et ne correspond pas à l'objectif pseudo-original. Le contenu de la partie FAQ est très répétitif avec le texte d'origine, le pseudo-original est difficile et a une faible valeur.)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
