Акысыз Cron туюнтма курулуштоочу

Пландалган тапшырмалар үчүн cron туюнтмаларын курулуштаңыз, текшериңиз жана түшүндүрүңүз. Түз жөнөкөй тилдеги баяндама, кийинки 5 иштөө алдын ала көрүнүшү жана кеңири таралган үлгү даярдалган варианттары.

Жүктөлгөндөн кийин оффлайн иштейт
мүнөт
(0-59)
саат
(0-23)
күн
(1-31)
ай
(1-12)
жума күнү
(0-7)

Жөнөкөй сөз менен

9:00 убагында, Дүйшөмбүдөн жумага чейин.

Кеңири колдонулган үлгүлөр

Стандарттуу Unix cron, GitHub Actions, Kubernetes CronJob жана көпчүлүк пландоо системалары менен шайкеш. "Ар бир" үчүн * колдонуңуз, "ар 5" үчүн */5, диапазондор үчүн 1-5, так маанилер үчүн 1,15. Ошондой эле @hourly, @daily, @weekly, @monthly, @yearly жана MON-FRI же JAN-DEC сыяктуу аталыштарды кабыл алат.

Бул кантип иштейт

Cron туюнтма курулушу lib/cron.ts'деги кол менен жазылган талдагыч колдонуп толугу менен браузериңизде иштейт — тышкы китепкана жок, серверге чалуу жок. Ал туюнтманы текшерет, локали-таанылуучу күн жана ай аттары үчүн браузердин курулма Intl.DateTimeFormat жана Intl.ListFormat API'лерин колдонуп жөнөкөй-англис сүрөттөмө чогултат жана ар бир мүнөттү катуу издебей, талаа-өткөрүп жиберүү логикасы менен убакыт аркылуу алдыга басып, кийинки пландалган иштетүү убактыларын эсептейт.

  1. 1
    Туюнтма талаа-боюнча-талаа талданат
    Талдагыч туюнтманы беш (же алты) боштук-бөлүнгөн талаага бөлөт жана ар бирин үтүрлөр, диапазондор (мис. 1-5), кадам белгилөө (мис. */15) жана MON же JAN сыяктуу аталган маанилер үчүн токендейт. @daily сыяктуу @макростор талдоо башталганга чейин алардын беш-талаалык барабарларына жайылтылат. Жарактуу эмес маанилер же диапазондон тышкары сандар локализацияланган билдирүүлөргө картага түшкөн терилген ката ачкычтары катары чыгат.
  2. 2
    Адам-окуй турган сүрөттөмө чогултулган
    lib/cron.ts'деги describeCron() кайсы талаалар джокер экенин же так топтор экенин текшерип, англис (же локализацияланган) сүйлөмдү курат. Күн жана ай аттары активдүү локали менен Intl.DateTimeFormat аркылуу чечилет, ал эми тизме элементтери туташтыруу ('жана' vs ',' vs локали-тиешелүү форма) колдонуучунун тилине дал келиши үчүн Intl.ListFormat колдонуп бириктирилет.
  3. 3
    Кийинки иштетүү убактылары талаа-өткөрүп жиберүү менен эсептелет
    nextRuns() учурдагы учурдан Date объектисин алдыга басат, бирок дал келе албай турган бүтүн айларды, күндөрдү же саатты өткөрүп жиберет, ар бир мүнөттү сынабай эле. Бул февралдын 30у сыяктуу мүмкүн эмес графикти 2.6 миллион ирет циклдебей эле беш-жылдык горизонт текшерүү аркылуу тез чыгарат дегенди билдирет.
  4. 4
    Туюнтма URL фрагменти аркылуу бөлүшүлгөн
    Тергениңиз каалаган туюнтма баракттын URL фрагментине #expr= катары жазылат (window.history.replaceState аркылуу 500 мс кечиктирилген). Фрагмент эч качан серверге жиберилбейт; барак жүктөгөндө андан гидратацияланат, ошондуктан URL'ди бөлүшүү же кыстармага коюу эч кандай сервер абалысыз так туюнтманы калыбына келтирет.

Байланыштуу куралдар

Көп берилүүчү суроолор