หากคุณต้องการกำหนดเวลาให้ฟังก์ชันทำงานตามเวลาที่กำหนด ให้ใช้ตัวจัดการ onSchedule
เพื่อสร้างหัวข้อ Pub/Sub ที่ใช้ Cloud Scheduler เพื่อทริกเกอร์เหตุการณ์ในหัวข้อนั้น
ก่อนที่คุณจะเริ่มต้น
หากต้องการใช้โซลูชันนี้ในโปรเจ็กต์ Firebase โปรเจ็กต์ของคุณต้องใช้แผนราคา Blaze หากยังไม่ได้อยู่ในแผน Blaze ให้อัปเกรดแผนการกำหนดราคาของคุณ
แม้จะต้องมีการเรียกเก็บเงิน แต่คุณก็คาดหวังให้จัดการค่าใช้จ่ายโดยรวมได้ เนื่องจากงาน Cloud Scheduler แต่ละงานมีค่าใช้จ่าย $0.10 (USD) ต่อเดือน และมีงานสามงานต่อบัญชี Google โดยไม่มีค่าใช้จ่าย ใช้ เครื่องคำนวณราคา Blaze เพื่อสร้างประมาณการค่าใช้จ่ายตามการใช้งานที่คาดการณ์ไว้ของคุณ
ต้องเปิดใช้งาน Pub/Sub และ Cloud Scheduler API สำหรับโครงการของคุณ สิ่งเหล่านี้ควรเปิดใช้งานสำหรับโครงการ Firebase ส่วนใหญ่แล้ว คุณสามารถยืนยันได้ใน Google Cloud Platform Console
เขียนฟังก์ชันที่กำหนดเวลาไว้
ใน Cloud Functions สำหรับ Firebase ตรรกะการตั้งเวลาจะอยู่ในโค้ดฟังก์ชันของคุณ โดยไม่มีข้อกำหนดเวลาปรับใช้พิเศษ หากต้องการสร้างฟังก์ชันตามกำหนดการ ให้ใช้ functions.pubsub.schedule('your schedule').onRun((context))
ตัวอย่างเช่น หากต้องการเรียกใช้ฟังก์ชันทุกๆ 5 นาทีด้วยไวยากรณ์ App Engine cron.yaml ให้ทำดังนี้:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Cloud Scheduler รองรับทั้งไวยากรณ์ Unix Crontab และ App Engine ตัวอย่างเช่น หากต้องการใช้ Crontab เพื่อเลือกเขตเวลาที่ต้องการเรียกใช้ฟังก์ชันตามกำหนดเวลา ให้ทำดังนี้
exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
.timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
.onRun((context) => {
console.log('This will be run every day at 11:05 AM Eastern!');
return null;
});
ค่าสำหรับ timeZone
ต้องเป็นชื่อโซนเวลาจาก ฐานข้อมูล tz ดู การอ้างอิง Cloud Scheduler สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติที่รองรับ
ปรับใช้ฟังก์ชันที่กำหนดเวลาไว้
เมื่อคุณปรับใช้ฟังก์ชันตามกำหนดเวลา งานตัวจัดกำหนดการที่เกี่ยวข้องและหัวข้อ pub/sub จะถูกสร้างขึ้นโดยอัตโนมัติ Firebase CLI แสดงชื่อหัวข้อ และคุณสามารถดูงานและหัวข้อได้ใน คอนโซล GCP หัวข้อถูกตั้งชื่อตามการประชุมต่อไปนี้:
firebase-scheduled- function_name - region
ตัวอย่างเช่น:
firebase-กำหนดเวลา-กำหนดเวลาFunctionCrontab-เรา-ตะวันออก1.