ไลบรารี robfig/cron
กำหนดเวลาด้วยไวยากรณ์ cron
ไลบรารี robfig/cron เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
นิพจน์ Cron ใน Go
ไลบรารี robfig/cron ช่วยให้คุณจัดตารางงานด้วยไวยากรณ์ cron ที่คุ้นเคย แทนการเขียนการคำนวณเวลาเอง ติดตั้งด้วย go get github.com/robfig/cron/v3
import "github.com/robfig/cron/v3"ทบทวนไวยากรณ์ Cron
นิพจน์ cron มาตรฐานมีห้าฟิลด์:
- นาที (0-59)
- ชั่วโมง (0-23)
- วันที่ของเดือน (1-31)
- เดือน (1-12)
- วันในสัปดาห์ (0-6)
ตัวอย่าง: 0 9 * * 1-5 = 9:00 น. ในวันธรรมดา
การสร้างตัวจัดตารางเวลา
cron.New() ส่งคืนตัวจัดตารางเวลา คุณเพิ่มงานแล้วจึงเริ่มการทำงานได้
c := cron.New()
c.Start()
defer c.Stop()การเพิ่มงาน
AddFunc ลงทะเบียนฟังก์ชันให้ทำงานตามตารางเวลา โดยส่งคืนรหัสรายการและข้อผิดพลาดหากข้อกำหนดไม่ถูกต้อง
id, err := c.AddFunc("30 * * * *", func() {
fmt.Println("runs at minute 30")
})
if err != nil {
log.Fatal(err)
}
_ = idฟิลด์วินาที
robfig/cron v3 ใช้ข้อกำหนดแบบห้าฟิลด์เป็นค่าเริ่มต้น โดยไม่มีวินาที หากต้องการใช้ข้อกำหนดแบบหกฟิลด์ที่มีวินาที ให้สร้าง cron โดยเปิดใช้ตัวเลือกวินาที
c := cron.New(cron.WithSeconds())
c.AddFunc("*/5 * * * * *", func() { fmt.Println("every 5s") })ตารางเวลาที่กำหนดไว้ล่วงหน้า
มีมาโครที่สะดวกให้ใช้:
@hourly@daily@weekly@every 1h30m
c.AddFunc("@every 1h30m", func() { fmt.Println("every 90 min") })
c.AddFunc("@daily", func() { fmt.Println("midnight") })การนำงานออก
ใช้ EntryID ที่ส่งคืนมาเพื่อนำงานออกแบบไดนามิก
id, _ := c.AddFunc("@hourly", task)
// later:
c.Remove(id)งานทำงานในโกโรทีน
งานที่จัดตารางไว้แต่ละงานทำงานในโกโรทีนของตัวเอง หากงานอาจทำงานซ้อนกับการเรียกใช้งานครั้งถัดไป ให้ป้องกันการทำงานพร้อมกัน หรือใช้ตัวห่อหุ้มที่ข้ามการทำงานที่ซ้อนกัน
เขตเวลา
โดยค่าเริ่มต้น ตารางเวลาจะใช้เวลาท้องถิ่นของเครื่อง ส่งตำแหน่งที่ตั้งเข้าไปเพื่อระบุให้ชัดเจนและหลีกเลี่ยงปัญหาที่ไม่คาดคิดจาก DST
loc, _ := time.LoadLocation("America/New_York")
c := cron.New(cron.WithLocation(loc))แยกวิเคราะห์โดยไม่ต้องทำงาน
คุณสามารถตรวจสอบข้อกำหนดหรือคำนวณการทำงานครั้งถัดไปด้วยตัวแยกวิเคราะห์ ซึ่งเหมาะอย่างยิ่งสำหรับการทดสอบและการแสดงการทำงานครั้งถัดไปให้ผู้ใช้เห็น
sched, _ := cron.ParseStandard("0 9 * * 1-5")
next := sched.Next(time.Now())
fmt.Println("next run:", next)ตัวอย่างที่เรียกใช้ได้: คำนวณการทำงานของครอนครั้งถัดไป (การเปรียบเทียบ)
robfig/cron เป็นสิ่งภายนอก ตัวอย่างโค้ดจากไลบรารีมาตรฐานนี้จำลองกฎครอนที่ง่ายที่สุด นั่นคือ "ทุกนาทีที่ต้นนาที" โดยคำนวณเวลาถัดไปที่ตรงตามเงื่อนไข
package main
import (
"fmt"
"time"
)
func nextRun(from time.Time) time.Time {
return from.Truncate(time.Minute).Add(time.Minute)
}
func main() {
now := time.Date(2026, 1, 1, 8, 15, 30, 0, time.UTC)
fmt.Println("now:", now.Format("15:04:05"))
fmt.Println("next:", nextRun(now).Format("15:04:05"))
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับไลบรารี robfig/cron
สรุปทบทวน
คุณได้เรียนรู้ไลบรารี robfig/cron:
cron.New()+AddFunc(spec, fn)+Start()- ข้อกำหนด 5 ช่องโดยค่าเริ่มต้น ส่วน
WithSecondsจะเพิ่มช่องวินาที - มาโครอย่าง
@dailyและ@everyช่วยให้ตารางเวลาที่ใช้บ่อยง่ายขึ้น - ใช้
Removeตำแหน่งที่ตั้ง และParseStandardเพื่อควบคุมและทดสอบ
คำถามที่พบบ่อย
บทเรียน “ไลบรารี robfig/cron” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ไลบรารี robfig/cron” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ไลบรารี robfig/cron”
กำหนดเวลาด้วยไวยากรณ์ cron คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ไลบรารี robfig/cron” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดเวลาตามเวลา
- ไลบรารี robfig/cron
- ตัวนับเวลาสำหรับช่วงเวลา
- การปิดงานอย่างราบรื่น