Bepul Cron Ifodasi Quruvchisi

Rejalashtirilgan vazifalar uchun cron ifodalarini yarating, tekshiring va tushuntiring. Jonli oddiy tildagi ta'rif, keyingi 5 ta ishga tushishning oldindan ko'rinishi va keng tarqalgan naqsh tayyor variantlari.

Yuklangandan keyin oflayn ishlaydi
daqiqa
(0-59)
soat
(0-23)
kun
(1-31)
oy
(1-12)
hafta kuni
(0-7)

Oddiy tilda

9:00 da, Dushanbadan jumagacha.

Keng tarqalgan andozalar

Standart Unix cron, GitHub Actions, Kubernetes CronJob va aksariyat rejalashtirish tizimlari bilan mos keladi. "Har biri" uchun * dan, "har 5 tasi" uchun */5 dan, diapazonlar uchun 1-5 dan, aniq qiymatlar uchun 1,15 dan foydalaning. Shuningdek, @hourly, @daily, @weekly, @monthly, @yearly va MON-FRI yoki JAN-DEC kabi nomlarni ham qabul qiladi.

Qanday ishlaydi

Cron ifoda quruvchisi lib/cron.ts dagi qo'lda yozilgan tahlilchi yordamida to'liq brauzeringizda ishlaydi — tashqi kutubxonasiz, server chaqiruvisiz. U ifodani tekshiradi, mahalliy kun va oy nomlari uchun brauzerning o'rnatilgan Intl.DateTimeFormat va Intl.ListFormat API'laridan foydalanib oddiy ingliz tavsifini yig'adi va har bir daqiqani qo'pol kuch bilan tekshirish o'rniga maydon-o'tkazib-yuborish mantig'i bilan vaqt bo'ylab oldinga yurish orqali keyingi rejalashtirilgan ishga tushirish vaqtlarini hisoblaydi.

  1. 1
    Ifoda maydon-bo-maydon tahlil qilinadi
    Tahlilchi ifodani beshta (yoki oltita) bo'shliq bilan ajratilgan maydonga bo'ladi va har birini vergullar, diapazonlar (masalan, 1-5), qadam belgisi (masalan, */15) va MON yoki JAN kabi nomlangan qiymatlar uchun tokenlaydi. @daily kabi @makrolar tahlil boshlanishidan oldin o'zining besh maydonli ekvivalentiga kengaytiriladi. Noto'g'ri qiymatlar yoki diapazondan tashqari raqamlar mahalliylashtirilgan xabarlarga xaritalanuvchi tur berilgan xato kalitlari sifatida chiqadi.
  2. 2
    Odam-o'qiy oladigan tavsif yig'iladi
    lib/cron.ts dagi describeCron() qaysi maydonlar joker belgi va qaysilari aniq to'plamlar ekanligini tekshirib ingliz (yoki mahalliylashtirilgan) jumlani quradi. Kun va oy nomlari faol til bilan Intl.DateTimeFormat orqali hal qilinadi, ro'yxat elementlari esa Intl.ListFormat yordamida birlashtiriladi, shunda bog'lovchi ('va' vs ',' vs mahalliy shakl) foydalanuvchi tiliga mos keladi.
  3. 3
    Keyingi ishga tushirish vaqtlari maydon o'tkazib yuborish bilan hisoblanadi
    nextRuns() Date obyektini joriy lahzadan oldinga yuradi, lekin mos kela olmaydigan butun oylar, kunlar yoki soatlarni har bir daqiqani sinash o'rniga o'tkazib yuboradi. Bu Fevral 30 kabi imkonsiz jadval 2.6 million marta aylanib o'tirish o'rniga besh yillik gorizont tekshiruvi orqali tezda chiqishini anglatadi.
  4. 4
    Ifoda URL fragmenti orqali ulashiladi
    Siz yozgan har qanday ifoda sahifaning URL fragmentiga #expr= sifatida yoziladi (window.history.replaceState orqali 500 ms bilan sekinlashtirilgan). Fragment hech qachon serverga yuborilmaydi; sahifa yuklanganda undan tiklanadi, shuning uchun URL'ni ulashish yoki xatchubga qo'shish server holatisiz aniq ifodani tiklaydi.

Tegishli asboblar

Ko'p so'raladigan savollar