À 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
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 "?"
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
REMARQUE : lorsque vous utilisez le paramètre "L", ne spécifiez pas de liste ou de plage car cela entraînerait des problèmes
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, - * /
"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!