Heim  >  Artikel  >  Java  >  Zugehöriger Inhalt des Cron-Ausdrucks basierend auf der einfachsten Implementierung und Konfiguration geplanter Aufgaben basierend auf Spring

Zugehöriger Inhalt des Cron-Ausdrucks basierend auf der einfachsten Implementierung und Konfiguration geplanter Aufgaben basierend auf Spring

PHP中文网
PHP中文网Original
2017-06-22 11:32:251437Durchsuche

Ursprünglich sollte dieser Artikel zusammen mit den ersten beiden Artikeln dieser Serie veröffentlicht werden. Allerdings ist mir gestern beim Suchen und Zusammenfassen von Informationen ein Unfall passiert, weshalb ich es etwas verschoben habe.

Der Inhalt dieses Artikels bezieht sich hauptsächlich auf diesen Blog-Beitrag: (Baidu-Suchlink, der bei Cron-Ausdrücken an erster Stelle steht). Versuchen Sie, etwas zu schreiben, das ein wenig anders ist als andere. Obwohl der Inhalt größtenteils ähnlich ist.

Beginnen wir mit einem Beispiel:

„0 0 10,14,16 * *“ Was bedeutet das?

Da der Cron-Ausdruck eine Zeichenfolge ist, wird die Zeichenfolge durch 5 oder 6 Leerzeichen getrennt und in 6 oder 7 Felder unterteilt. Jedes Feld stellt eine Bedeutung dar:

Sekunden Minuten Stunden Tag des Monats Monat Tag der Woche Jahr oder
Sekunden MINUTES HOURS DAYOFMONTH MONTH DAYOFWEK

* *? " Die ersten beiden Stellen sind beide 0. Die dritte Stelle ist Der Wert der Stunde ist 10, 14 und 16. Hier bedeutet „“, „Auflistung und Aufzählung“, was bedeutet, dass es jedes Mal ausgeführt wird, wenn es auf 10, 14 und 16 Stunden trifft, und die folgenden sind alle * , was bedeutet, dass ein beliebiger Wert in diesem Feld vorhanden ist. Wenn im Feld „Minuten“ ein * verwendet wird, bedeutet dies, dass das Ereignis jede Minute ausgelöst wird.

Dann bezieht sich das letzte „?“ in „0 0 10,14,16 * * ?:“ nur auf die beiden Felder DayofMonth und DayofWeek. Es stimmt auch mit jedem Wert der Domäne überein, aber das stimmt nicht. Weil DayofMonth und DayofWeek sich gegenseitig beeinflussen. Wenn Sie beispielsweise die Planung am 20. eines jeden Monats auslösen möchten, können Sie unabhängig davon, auf welchen Wochentag der 20. fällt, nur die folgende Schreibweise verwenden: 13 13 15 20 * ?, wobei nur die letzte Ziffer verwendet werden kann ? , aber * kann nicht verwendet werden. Wenn * verwendet wird, bedeutet dies, dass es unabhängig vom Wochentag ausgelöst wird, was eigentlich nicht der Fall ist.

Also „0 0 10,14,16 * * ?“ bedeutet, dass es jeden Tag um 10 Uhr, 14 Uhr und 16 Uhr ausgelöst wird.

Dann die nächste Frage:

„0 0/30 9-17 * * ?“

In diesem Ausdruck gibt es zwei weitere Symbole als im vorherigen: einer ist „/“ und der andere ist „-“. Ihre Bedeutungen sind:

„-“: Gibt den Bereich an. Die Verwendung von 5-20 im Feld „Minuten“ bedeutet beispielsweise, dass jede Minute von 5 Minuten bis 20 Minuten ausgelöst wird.
„/“: Zeigt an Startzeit Beginnen Sie mit der Auslösung und lösen Sie sie dann zu jeder festgelegten Zeit aus. Wenn Sie beispielsweise 5/20 im Feld „Minuten“ verwenden, bedeutet dies, dass die Auslösung einmal alle 5 Minuten und einmal alle 25, 45 usw. ausgelöst wird.

Also hier bedeutet „0/30“, dass es alle 30 Minuten ab 0 Minuten ausgeführt wird. Und „9-17“ markiert den Bereich, das heißt, es wird von 9 Uhr bis 17 Uhr ausgeführt. Zusammengefasst: „0 0/30 9-17 * * ?“ Dieser Ausdruck bedeutet, dass er täglich von 9:00 bis 17:00 Uhr alle 30 Minuten ausgeführt wird.

Weiter, nächste Frage:

Der Ausdruck hier hat ein zusätzliches „WED“, was die Abkürzung für Mittwoch ist

Also hier 0 0 12 ? * MI“ bedeutet jeden Mittwoch um 12 Uhr, die Testergebnisse werden sofort bekannt gegeben. (Um das Testen zu erleichtern, ändern Sie die Zeit auf alle 10 Sekunden.)

Die verbleibenden Cron-Ausdrücke in diesem Artikel können in den geplanten Aufgaben der beiden vorherigen getestet und überprüft werden Artikel. Die übrigen Ausdrücke werden nicht einzeln analysiert. Das Folgende wird aus dem Originaltext zitiert, in der Hoffnung, einige Fragen zu beantworten:

1. Analyse des Inhalts des Cron-Ausdrucks

Cron-Ausdruck ist eine Zeichenfolge, die durch 5 oder 6 Leerzeichen getrennt und in 6 oder 7 Felder unterteilt ist. Jedes Feld stellt eine Bedeutung dar:

Sekunden Minuten Stunden Tag des Monats Monat Tag der Woche Jahr oder
Sekunden Minuten Stunden Tag des Monats Monat Tag der Woche

Die Zeichen, die in jedem Feld angezeigt werden können, sind wie folgt:
Sekunden: Vier Zeichen „, - * /“ können angezeigt werden, und die Der gültige Bereich liegt zwischen 0 und 59 Ganzzahlen.
Minuten: Es können vier Zeichen „, - * /“ angezeigt werden. Der gültige Bereich liegt zwischen 0 und 59 Ganzzahlen.
Stunden: Es können vier Zeichen „, - * /“ angezeigt werden, der gültige Bereich ist 0 -23 Ganzzahl
Monatstag: Es können acht Zeichen „, - * / ? L W C“ vorkommen, der gültige Bereich ist eine Ganzzahl von 0-31
Monat: Vier Zeichen „, - * /“ können vorkommen, der gültiger Bereich Es ist eine Ganzzahl von 1 bis 12 oder JAN-DEc
DayofWeek: Die vier Zeichen „, - * / ? L C #“ können vorkommen, und der gültige Bereich ist eine Ganzzahl von 1 bis 7 oder die beiden Bereiche von SO-SA. 1 bedeutet Sonntag, 2 bedeutet Montag und so weiter.
Jahr: Es können vier Zeichen ", - * /" angezeigt werden, und der gültige Bereich ist 1970-2099.

Jedes Feld verwendet Zahlen, aber dort sind immer noch Die folgenden Sonderzeichen können auftreten und haben folgende Bedeutung:
(1)*: Zeigt an, dass ein Wert in diesem Feld übereinstimmt. Wenn * im Feld „Minuten“ verwendet wird, bedeutet dies, dass das Ereignis jede Minute ausgelöst wird.

(2)?: Kann nur in den Feldern DayofMonth und DayofWeek verwendet werden. Es stimmt auch mit jedem Wert der Domäne überein, aber das stimmt nicht. Weil DayofMonth und DayofWeek sich gegenseitig beeinflussen. Wenn Sie beispielsweise die Planung am 20. eines jeden Monats auslösen möchten, können Sie unabhängig davon, auf welchen Wochentag der 20. fällt, nur die folgende Schreibweise verwenden: 13 13 15 20 * ?, wobei nur die letzte Ziffer verwendet werden kann ? , aber * kann nicht verwendet werden. Wenn * verwendet wird, bedeutet dies, dass es unabhängig vom Wochentag ausgelöst wird, was eigentlich nicht der Fall ist.

(3)-: Gibt den Bereich an. Wenn Sie beispielsweise 5-20 im Feld „Minuten“ verwenden, bedeutet dies, dass jede Minute von 5 Minuten bis 20 Minuten ausgelöst wird. Gibt die Startzeit an. Wenn Sie beispielsweise 5/20 im Feld „Minuten“ verwenden, bedeutet dies, dass es einmal alle 5 Minuten und einmal alle 25, 45 usw. ausgelöst wird.

(5): bedeutet, den Enum-Wert aufzulisten. Beispiel: Die Verwendung von 5,20 im Feld „Minuten“ bedeutet, dass es jede Minute bei 5 und 20 Minuten ausgelöst wird.

(6)L: bedeutet letzter und kann nur in den Feldern DayofWeek und DayofMonth erscheinen. Wenn 5L im Feld DayofWeek verwendet wird, bedeutet dies, dass es am letzten Donnerstag ausgelöst wird.

(7)W: Gibt gültige Arbeitstage (Montag bis Freitag) an, die nur im Feld DayofMonth angezeigt werden können. Das System löst das Ereignis am nächsten gültigen Arbeitstag zum angegebenen Datum aus. Beispiel: Wenn Sie 5W am DayofMonth verwenden und der 5. ein Samstag ist, wird es am nächsten Werktag ausgelöst: Freitag, also dem 4. Wenn der 5. ein Sonntag ist, wird er am 6. (Montag) ausgelöst; wenn der 5. auf einen Montag bis Freitag fällt, wird er am 5. ausgelöst. Ein weiterer Punkt ist, dass die letzte Suche von W keine Monate umfasst

(8)LW: Diese beiden Zeichen können zusammen verwendet werden, um den letzten Arbeitstag eines bestimmten Monats anzugeben, also den letzten Freitag.

(9)#: Wird verwendet, um den Wochentag jedes Monats zu bestimmen. Er kann nur im Feld DayofMonth erscheinen. In 4#2 bedeutet es beispielsweise den zweiten Mittwoch eines bestimmten Monats.

Einige Beispiele:

0 0 2 1 * ? * bedeutet die Planung von Aufgaben um 2 Uhr morgens am 1. eines jeden Monats

0 15 10 ? * MO-FR bedeutet Montag bis Freitag. Führen Sie den Job aus jeden Tag um 10:15 Uhr
0 15 10 ? 6L 2002-2006 bedeutet, dass der Job am letzten Freitag jedes Monats von 2002 bis 2006 ausgeführt wird

ein Cron-Ausdruck Es gibt mindestens 6 (möglicherweise 7) räumlich getrennte Zeitelemente.

In der Reihenfolge:
Sekunden (0~59)
Minuten (0~59)
Stunden (0~23)
Tage (Monate) (0~31, aber das müssen Sie berücksichtigen Die Anzahl der Tage in Ihrem Monat)
Monat (0~11)
Tag (Woche) (1~7 1=SONNE oder SONNE, MO, DIE, MITTWOCH, DO, FR, SA)
Jahr (1970-2099)

Jedes Element kann ein Wert (z. B. 6), ein kontinuierliches Intervall (9-12), ein Intervall (8-18/4) (/ bedeutet alle 4 Stunden) sein, a Liste (1,3,5), Platzhalter. Da sich die beiden Elemente „Tag des Monats“ und „Wochentag“ gegenseitig ausschließen, muss eines davon festgelegt werden.

Einige Unterausdrücke können einige Bereiche oder Listen enthalten


Zum Beispiel: Der Unterausdruck (Tag (Woche)) kann „MON-FR“, „MON, WED, FRI“, „MON-WED,SAT“ sein.

Das Zeichen „*“. stellt alle möglichen Werte dar

Daher stellt „*“ im Unterausdruck (Monat) die Bedeutung jedes Monats dar und „*“ im Unterausdruck (Tag (Woche)) stellt den Tag dar der Woche Jeden Tag

Das Zeichen „/“ wird verwendet, um die Schrittweite des Werts anzugeben

Zum Beispiel: „0/15“ im Unterausdruck (Minuten) bedeutet, dass beginnend mit dem 0. Minute, alle 15 Minuten
Das „3/20“ im Unterausdruck (Minuten) bedeutet, dass ab der 3. Minute alle 20 Minuten (es hat die gleiche Bedeutung wie „3, 23, 43“)

Das „?“-Zeichen wird nur in den beiden Unterausdrücken Tag (Monat) und Tag (Woche) verwendet und zeigt an, dass kein Wert angegeben ist.

Wenn einer der beiden Unterausdrücke angegeben ist Mit einem Wert ist es zur Vermeidung von Konflikten erforderlich, den Wert eines anderen Unterausdrucks auf „?“ zu setzen.

Das „L“-Zeichen wird nur in den Unterausdrücken Tag (Monat) und Tag (Woche) verwendet , das ist die Abkürzung des Wortes „last“

Aber seine Bedeutung in den beiden Unterausdrücken ist unterschiedlich.

Im Unterausdruck Tag (Monat) stellt „L“ den letzten Tag des Monats dar.
Im Selbstausdruck Tag (Woche) stellt „L“ den letzten Tag der Woche dar, d. h. SAT

Wenn vor „L“ ein bestimmter Inhalt steht, hat dieser andere Bedeutungen

Zum Beispiel: „6L“ bedeutet der 6. bis letzte Tag dieses Monats, „FRIL“ bedeutet der letzte Tag dieses Monats Ein Freitag

HINWEIS: Wenn Sie den Parameter „L“ verwenden, geben Sie keine Liste oder keinen Bereich an, da dies zu Problemen führt


Feld zulässige Werte Sonderzeichen zulässig

Sekunden 0- 59, - */

Minute 0-59, - * /
Stunde 0-23, - * /
Datum 1-31, - * ? / L W C
Monat 1-12 oder JAN- DEZ, - * /
Wochentag 1-7 oder SO-SA, - * ? / L C #
Jahr (optional) Leer lassen, 1970-2099, - * /

2. Beispiel für einen Cron-Ausdruck:

"0 0 12 * * ?" Wird jeden Tag um 12 Uhr ausgelöst
"0 15 10 ? * *" Wird jeden Tag um 10:15 Uhr ausgelöst
"0 15 10 * * ?" :15 Uhr jeden Tag
"0 15 10 * * ? *" Wird jeden Tag um 10:15 Uhr ausgelöst
"0 15 10 * * ? 2005" Wird 2005 jeden Tag um 10:15 Uhr ausgelöst
„0 * 14 * * ?“ Wird jeden Tag von 14:00 Uhr bis 14:59 Uhr alle 1 Minute ausgelöst
„0 0/5 14 * *“ Wird jeden Tag von 14:00 Uhr bis 14:55 Uhr alle 5 Minuten ausgelöst
“ 0/5 14,18 * * ?" wird zwischen 14:00 und 14:55 Uhr alle 5 Minuten und zwischen 18:00 und 18:55 Uhr alle 5 Minuten ausgelöst
"0 0-5 14 * * ?" wird jeden Nachmittag ausgelöst. Löst alle 1 Minute aus von 14:00 bis 14:05 Uhr
"0 10,44 14 ? 3 MI" Auslösung jeden Mittwoch im März um 14:10 und 14:44 Uhr
"0 15 10 ? * MO-FR" löst um 10:15 Uhr von Montag bis Freitag aus
"0 15 10 15 * ?" löst um 10:15 Uhr am 15. eines jeden Monats aus
"0 15 10 L * ?" Monat Ausgelöst um 10:15 Uhr
"0 15 10 ? * 6L" Ausgelöst um 10:15 Uhr am letzten Freitag jedes Monats
"0 15 10 ? * 6L 2002-2005" Jeden Monat von 2002 bis 2005 Ausgelöst um 10:15 Uhr am letzten Freitag jedes Monats
"0 15 10 ? * 6#3" Ausgelöst um 10:15 Uhr am dritten Freitag jedes Monats

Das obige ist der detaillierte Inhalt vonZugehöriger Inhalt des Cron-Ausdrucks basierend auf der einfachsten Implementierung und Konfiguration geplanter Aufgaben basierend auf Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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