0Pricing
Go Academy · บทเรียน

ไลบรารี 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดเวลาตามเวลา
  2. ไลบรารี robfig/cron
  3. ตัวนับเวลาสำหรับช่วงเวลา
  4. การปิดงานอย่างราบรื่น
← กลับไปที่ Go Academy