Maison > Java > javaDidacticiel > Contenu associé de l'expression cron basé sur l'implémentation et la configuration de tâches planifiées les plus simples basées sur Spring

Contenu associé de l'expression cron basé sur l'implémentation et la configuration de tâches planifiées les plus simples basées sur Spring

PHP中文网
Libérer: 2017-06-22 11:32:25
original
1496 Les gens l'ont consulté

À l'origine, cet article devait être publié avec les deux premiers articles de cette série. Cependant, j'ai rencontré un accident hier alors que je cherchais des informations et les résumais, alors je l'ai un peu reporté.

Le contenu de cet article fait principalement référence à cet article de blog : (le principal lien de recherche de Baidu pour les expressions cron). Essayez d'écrire quelque chose d'un peu différent des autres. Cependant, le contenu est pour l’essentiel similaire.

Commençons par un exemple :

« 0 0 10,14,16 * * ?

Tout d'abord, l'expression Cron étant une chaîne, la chaîne est séparée par 5 ou 6 espaces et divisée en 6 ou 7 champs. Chaque champ représente une signification selon les deux formats de syntaxe suivants :

Secondes MINUTES HEURES JOUR DU MOIS MOIS JOUR DE LA SEMAINE Année ou
Secondes MINUTES HEURES JOUR DU MOIS MOIS JOUR DE LA SEMAINE

* * " Les deux premières positions sont toutes deux 0. La troisième position est la valeur de l'heure, qui est 10, 14 et 16. Ici "," signifie listage et énumération, ce qui signifie qu'elle sera exécutée chaque fois qu'elle rencontrera 10, 14 et 16 heures, et les suivantes sont toutes * , ce qui signifie faire correspondre n'importe quelle valeur dans ce champ. Si * est utilisé dans le champ Minutes, cela signifie que l'événement sera déclenché toutes les minutes.

Ensuite, le dernier "?" dans "0 0 10,14,16 * * ?" fait référence à ? : ne peut être utilisé que dans les deux champs DayofMonth et DayofWeek. Il correspond également à n’importe quelle valeur du domaine, mais ce n’est pas le cas. Parce que DayofMonth et DayofWeek s’influenceront mutuellement. Par exemple, si vous souhaitez déclencher la programmation le 20 de chaque mois, quel que soit le jour de la semaine où tombe le 20, vous ne pouvez utiliser que l'écriture suivante : 13 13 15 20 * ?, où le dernier chiffre ne peut être utilisé que ? , mais * ne peut pas être utilisé Si * est utilisé, cela signifie qu'il sera déclenché quel que soit le jour de la semaine, ce qui n'est pas le cas en réalité.

Donc « 0 0 10,14,16 * * ? » signifie qu'il se déclenchera à 10h, 14h et 16h tous les jours.

Ensuite, la question suivante :

« 0 0/30 9-17 * * ? »

Dans cette expression, il y a deux symboles de plus que la précédente, l'un est "/" et l'autre est "-". Leurs significations sont :

"-" : Indique la plage, par exemple, utiliser 5-20 dans le champ Minutes signifie qu'il se déclenche toutes les minutes de 5 minutes à 20 minutes
"/" : Indique la heure de démarrage Commencez le déclenchement, puis déclenchez-le à chaque heure fixe. Par exemple, utiliser 5/20 dans le champ Minutes signifie qu'il se déclenche une fois toutes les 5 minutes, et se déclenche une fois toutes les 25, 45, etc.

Donc. ici "0/30" » signifie qu'il sera exécuté toutes les 30 minutes à partir de 0 minute. Et "9-17" marque la plage, c'est-à-dire qu'elle sera exécutée de 9 heures à 17 heures. Pris ensemble, "0 0/30 9-17 * * ?" Cette expression signifie qu'elle est exécutée toutes les 30 minutes de 9h00 à 17h00 tous les jours.

Continuer, question suivante :

L'expression ici a un "WED" supplémentaire, qui est l'abréviation de mercredi

Donc ici 0 0 12 ? * MER" signifie tous les mercredis à 12h, les résultats des tests seront immédiatement disponibles. (Pour faciliter les tests, modifiez l'heure toutes les 10 secondes)

Les expressions cron restantes de cet article peuvent être testées et vérifiées dans les tâches planifiées des deux précédentes. articles. Les expressions restantes ne seront pas analysées une par une. Ce qui suit est extrait du texte original, dans l'espoir de répondre à quelques questions :

1. Analyse du contenu de l'expression Cron

Expression Cron est une chaîne, la chaîne est séparée par 5 ou 6 espaces et divisée en 6 ou 7 champs. Chaque champ représente une signification Cron a les deux formats de syntaxe suivants :

Secondes Minutes Heures Jour du Mois Mois Jour de la Semaine. Année ou
Secondes Minutes Heures Jour du Mois Mois Jour de la Semaine

Les caractères pouvant apparaître dans chaque champ sont les suivants :
Secondes : Quatre caractères ", - * /" peuvent apparaître, et le la plage valide est de 0 à 59 entiers
Minutes : quatre caractères ", - * /" peuvent apparaître, la plage valide est de 0 à 59 entiers
Heures : quatre caractères ", - * /" peuvent apparaître, la plage valide est 0 -23 entier
JourduMois : huit caractères ", - * / ? L W C" peuvent apparaître, la plage valide est un entier de 0 à 31
Mois : quatre caractères ", - * /" peuvent apparaître, le plage valide C'est un entier de 1 à 12 ou JAN-DEc
DayofWeek : Les quatre caractères ", - * / ? L C #" peuvent apparaître, et la plage valide est un entier de 1 à 7 ou les deux plages de DIM-SAT. 1 signifie dimanche, 2 signifie lundi, et ainsi de suite
Année : quatre caractères ", - * /" peuvent apparaître et la plage valide est 1970-2099

Chaque champ utilise des chiffres, mais il y en a. sont toujours Les caractères spéciaux suivants peuvent apparaître, et leurs significations sont :
(1)* : Indique qu'elle correspond à n'importe quelle valeur dans ce champ. Si * est utilisé dans le champ Minutes, cela signifie que l'événement sera déclenché toutes les minutes.

(2) ? : Ne peut être utilisé que dans les champs DayofMonth et DayofWeek. Il correspond également à n’importe quelle valeur du domaine, mais ce n’est pas le cas. Parce que DayofMonth et DayofWeek s’influenceront mutuellement. Par exemple, si vous souhaitez déclencher la programmation le 20 de chaque mois, quel que soit le jour de la semaine où tombe le 20, vous ne pouvez utiliser que l'écriture suivante : 13 13 15 20 * ?, où le dernier chiffre ne peut être utilisé que ? , mais * ne peut pas être utilisé Si * est utilisé, cela signifie qu'il sera déclenché quel que soit le jour de la semaine, ce qui n'est pas le cas en réalité.

(3)- : Indique la plage. Par exemple, utiliser 5-20 dans le champ Minutes signifie qu'il se déclenche toutes les minutes de 5 minutes à 20 minutes.

(4)/ : Indique l'heure de début, puis déclenche à chaque heure fixe. Par exemple, utiliser 5/20 dans le champ Minutes signifie qu'il se déclenche une fois toutes les 5 minutes, et se déclenche une fois toutes les 25, 45, etc.

(5), : signifie répertorier la valeur de la valeur enum. Par exemple : utiliser 5,20 dans le champ Minutes signifie qu'il se déclenche toutes les minutes à 5 et 20 minutes.

(6)L : signifie dernier et ne peut apparaître que dans les champs DayofWeek et DayofMonth. Si 5L est utilisé dans le champ DayofWeek, cela signifie le déclenchement le jeudi dernier.

(7)W : Indique les jours ouvrables valides (du lundi au vendredi), qui ne peuvent apparaître que dans le champ Jour du mois. Le système déclenchera l'événement le jour ouvrable valide le plus proche de la date spécifiée. Par exemple : en utilisant 5W le JourduMois, si le 5 est un samedi, il se déclenchera le jour ouvrable le plus proche : le vendredi, qui est le 4. Si le 5 est un dimanche, il se déclenchera le 6 (lundi) ; si le 5 est un du lundi au vendredi, il se déclenchera le 5. Un autre point est que la dernière recherche de W ne s'étendra pas sur des mois

(8)LW : Ces deux caractères peuvent être utilisés ensemble pour indiquer le dernier jour ouvrable d'un certain mois, c'est-à-dire le dernier vendredi.

(9)# : Utilisé pour déterminer le jour de la semaine de chaque mois. Il ne peut apparaître que dans le champ Jour du mois. Par exemple, en 4#2, cela signifie le deuxième mercredi d'un certain mois.

Quelques exemples :
0 0 2 1 * ? * signifie planifier des tâches à 2 heures du matin le 1er de chaque mois
0 15 10 * LUN-FRI signifie du lundi au vendredi Exécuter le travail à 10h15 tous les jours
0 15 10 ? 6L 2002-2006 signifie exécuter le travail à 10h15 le dernier vendredi de chaque mois de 2002 à 2006


une expression cron Il y a au moins 6 (éventuellement 7) éléments temporels séparés par l'espace.
Dans l'ordre :
Secondes (0~59)
Minutes (0~59)
Heures (0~23)
Jours (mois) (0~31, mais vous devez prendre en compte Le nombre de jours dans votre mois)
Mois (0~11)
Jour (semaine) (1~7 1=SUN ou SUN, LUN, TUE, WED, THU, FRI, SAT)
Année (1970- 2099)

Chaque élément peut être une valeur (comme 6), un intervalle continu (9-12), un intervalle (8-18/4) (/ signifie toutes les 4 heures), un Liste (1,3,5), caractère générique. Puisque les deux éléments "jour du mois" et "jour de la semaine" s'excluent mutuellement, l'un d'eux doit être défini


Certaines sous-expressions peuvent inclure Certaines plages ou listes

Par exemple : la sous-expression (jour (semaine)) peut être "MON-FRI", "MON, WED, FRI", "MON-WED,SAT"

Le caractère "*" représente toutes les valeurs possibles

Par conséquent, "*" dans la sous-expression (mois) représente la signification de chaque mois, et "*" dans la sous-expression (jour (semaine)) représente le jour de la semaine Chaque jour

Le caractère "/" permet de préciser l'incrément de la valeur
Par exemple : "0/15" dans la sous-expression (minutes) signifie qu'à partir du 0ème minute, toutes les 15 minutes
Le "3/20" dans la sous-expression (minutes) signifie qu'à partir de la 3ème minute, toutes les 20 minutes (il a la même signification que "3, 23, 43")

Le caractère "?" n'est utilisé que dans les deux sous-expressions de jour (mois) et jour (semaine), indiquant qu'aucune valeur n'est spécifiée
Lorsque l'une des deux sous-expressions est spécifiée avec une valeur, afin d'éviter les conflits, vous devez définir la valeur d'une autre sous-expression sur "?"

Le caractère "L" n'est utilisé que dans les sous-expressions jour (mois) et jour (semaine), qui est l'abréviation du mot "dernier"

Mais sa signification dans les deux sous-expressions est différente.
Dans la sous-expression jour (mois), "L" représente le dernier jour du mois
Dans l'expression personnelle jour (semaine), "L" représente le dernier jour de la semaine, c'est-à-dire SAT

S'il y a un contenu spécifique avant "L", il a d'autres significations

Par exemple : "6L" signifie le 6ème au dernier jour de ce mois, "FRIL" signifie le dernier jour de ce mois Un vendredi

REMARQUE : lorsque vous utilisez le paramètre "L", ne spécifiez pas de liste ou de plage car cela entraînerait des problèmes

Valeurs autorisées des champs Caractères spéciaux autorisés

Secondes 0- 59, - */
Minute 0-59, - * /
Heure 0-23, - * /
Date 1-31, - * ? / L W C
Mois 1-12 ou JAN- DEC, - * /
Jour de la semaine 1-7 ou SUN-SAT, - * ? / L C #
Année (facultatif) Laisser vide, 1970-2099, - * /

2. Exemple d'expression Cron :

"0 0 12 * * ?" Déclenché à 12h tous les jours
"0 15 10 ? * *" Déclenché à 10h15 tous les jours
"0 15 10 * * ?" :15h tous les jours
"0 15 10 * * ? *" Déclenché tous les jours à 10h15
"0 15 10 * * ? 2005" Déclenché tous les jours à 10h15 en 2005
"0 * 14 * * ?" Déclenche toutes les 1 minutes de 14h à 14h59 tous les jours
"0 0/5 14 * * ?" Déclenche toutes les 5 minutes de 14h à 14h55 tous les jours
"0 0/5 14,18 * * ?" se déclenche toutes les 5 minutes entre 14h et 14h55 et toutes les 5 minutes entre 18h et 18h55
"0 0-5 14 * * ?" se déclenche tous les après-midi se déclenche toutes les 1 minute de 14h00 à 14h05
"0 10,44 14 ? 3 MER" Déclenchements tous les mercredis de mars à 14h10 et 14h44
"0 15 10 ? *LUN-VEN" se déclenche à 10h15 du lundi au vendredi
"0 15 10 15 * ?" se déclenche à 10h15 le 15 de chaque mois
"0 15 10 L * le dernier jour de chacun ?" mois Déclenché à 10h15
"0 15 10 ? * 6L" Déclenché à 10h15 le dernier vendredi de chaque mois
"0 15 10 ? * 6L 2002-2005" Chaque mois de 2002 à 2005 Déclenché à 10h15 le dernier vendredi de chaque mois
"0 15 10 ? *6#3" Déclenché à 10h15 le troisième vendredi de chaque mois

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal