Olùmúdásílẹ̀ Àsọjáde Cron Ọ̀fẹ́

Kọ́, ṣàyẹ̀wò, kí o sì ṣàlàyé àwọn àsọjáde cron fún àwọn iṣẹ́ tí a ṣètò. Àlàyé Gẹ̀ẹ́sì lákòókò gidi, àyẹ̀wò àwọn àkókò márùn-ún tí ń bọ̀, àti àwọn àwòṣe tí ó wọ́pọ̀.

Ó ń ṣiṣẹ́ láìsí ìsopọ̀ ní kété tí a bá kó wọlé
ìṣẹ́jú
(0-59)
wákàtí
(0-23)
ọjọ́
(1-31)
oṣù
(1-12)
ọjọ́ ọ̀sẹ̀
(0-7)

Ní èdè tí ó rọrùn

Ní 09:00, Láti ọjọ́ Aje sí Ẹtì.

Àwòrán tí ó wọ́pọ̀

Ó bára mu pẹ̀lú cron Unix ìbílẹ̀, GitHub Actions, Kubernetes CronJob, àti ọ̀pọ̀lọpọ̀ àwọn ètò ìṣètò-àkókò. Lo * fún 'kọ̀ọ̀kan', */5 fún 'ní gbogbo 5', 1-5 fún àwọn àyè, 1,15 fún àwọn iye kan pàtó. Ó tún gba @hourly, @daily, @weekly, @monthly, @yearly, àti àwọn orúkọ bí i MON-FRI tàbí JAN-DEC.

Bí Ó Ṣe Ń Ṣiṣẹ́

Olùmújáde ọ̀rọ̀ cron ń ṣiṣẹ́ pátápátá nínú aṣàwákiri rẹ pẹ̀lú parser tí a fi ọwọ́ kọ nínú lib/cron.ts — kò sí ìwé-ìṣirò ìta, kò sí ìpè sáfà. Ó ń fọwọ́sí ọ̀rọ̀ náà, ó ń kó àpèjúwe èdè-lásán papọ̀ ní lílo àwọn API aṣàwákiri Intl.DateTimeFormat àti Intl.ListFormat tí a kọ́ sínú rẹ̀ fún àwọn orúkọ ọjọ́ àti oṣù tí ó mọ agbègbè, ó sì ń ṣírò àwọn àkókò ìṣiṣẹ́ tí ó tẹ̀lé nípa rìn síwájú nínú àkókò pẹ̀lú ìlànà fífo-pápá dípò gbígbìyànjú ìṣẹ́jú kọ̀ọ̀kan.

  1. 1
    A ń pín ọ̀rọ̀ náà sí pápá-lé-pápá
    Parser náà ń pín ọ̀rọ̀ náà sí pápá márùn-ún (tàbí mẹ́fà) tí àyè pín, ó sì ń pín ọ̀kọ̀ọ̀kan sí àwọn àmì fún kọ́mà, ààlà (f.à. 1-5), àkọsọ ìgbésẹ̀ (f.à. */15), àti àwọn iye tí a dárúkọ bí i MON tàbí JAN. A ń gbé àwọn @macros bí i @daily jáde sí ìdọ́gba pápá márùn-ún wọn kí ìpín tó bẹ̀rẹ̀. Àwọn iye tí kò tọ́ tàbí nọ́mbà lóde àyè ń farahàn gẹ́gẹ́ bí àwọn kọ́kọ́rọ́ àṣìṣe tí a mọ̀ tí ó ń fi àwọn ọ̀rọ̀ tí a ṣe agbègbè hàn.
  2. 2
    Àpèjúwe tí ènìyàn lè kà ni a kó papọ̀
    describeCron() nínú lib/cron.ts ń kọ́ gbólóhùn Gẹ̀ẹ́sì (tàbí agbègbè) nípa wíwo àwọn pápá tí wọ́n jẹ́ wildcard sí àwọn tí wọ́n jẹ́ àkópọ̀ pàtó. A ń yanjú àwọn orúkọ ọjọ́ àti oṣù nípasẹ̀ Intl.DateTimeFormat pẹ̀lú agbègbè tí ó ń ṣiṣẹ́, a sì ń so àwọn ohun àtòjọ pọ̀ pẹ̀lú Intl.ListFormat nítorí náà ìdìpọ̀ ('àti' vs ',' vs fọ́ọ̀mù agbègbè pàtó) ń bára mu èdè oníṣẹ́ náà.
  3. 3
    A ń ṣírò àkókò ìṣiṣẹ́ tí ó tẹ̀lé pẹ̀lú fífo-pápá
    nextRuns() ń gbé ohun Date kan síwájú láti ìṣẹ́jú lọ́wọ́lọ́wọ́, ṣùgbọ́n ó ń fo gbogbo oṣù, ọjọ́, tàbí wákàtí tí kò lè bára mu kọjá dípò kí ó dán ìṣẹ́jú kọ̀ọ̀kan wò. Èyí ń túmọ̀ sí pé ìtòlẹ́sẹẹsẹ tí kò ṣeéṣe bí i Oṣù Kejì 30 ń jáde kíákíá nípasẹ̀ ìṣàyẹ̀wò àyè ọdún márùn-ún dípò yíyíká ìgbà 2.6 mílíọ̀nù.
  4. 4
    A ń pín ọ̀rọ̀ náà nípasẹ̀ fragment URL
    Ọ̀rọ̀ èyíkéyìí tí o kọ ni a kọ sí fragment URL ojú-ìwé náà gẹ́gẹ́ bí #expr= (debounced 500 ms nípasẹ̀ window.history.replaceState). A kì í fi fragment náà ránṣẹ́ sí sáfà kankan láé; ojú-ìwé náà ń rí i nípa hydrate láti inú rẹ̀ nígbà tí ó bá kó wọlé, nítorí náà pínpín tàbí fífi URL kan pamọ́ ń mú ọ̀rọ̀ gan-an padà láìsí ipò sáfà kankan.

Àwọn Irinṣẹ Tó Jọra

Àwọn Ìbéèrè Tí A Máa Ń Béèrè