หากต้องการตั้งเวลาให้ฟังก์ชันทํางานตามเวลาที่กำหนด ให้ใช้เครื่องจัดการ onSchedule
เพื่อสร้างหัวข้อ Pub/Sub ที่ใช้ Cloud Scheduler เพื่อทริกเกอร์เหตุการณ์ในหัวข้อนั้น
ก่อนเริ่มต้น
หากต้องการใช้โซลูชันนี้ในโปรเจ็กต์ Firebase โปรเจ็กต์ของคุณต้องใช้แพ็กเกจราคา Blaze หากยังไม่ได้อยู่ในแพ็กเกจ Blaze ให้อัปเกรดแพ็กเกจราคา
แม้ว่าจะต้องมีการเรียกเก็บเงิน แต่ค่าใช้จ่ายโดยรวมจะอยู่ในระดับที่คุณจัดการได้ เนื่องจากCloud Schedulerงานแต่ละรายการมีค่าใช้จ่าย $0.10 (USD) ต่อเดือน และคุณมีสิทธิ์ใช้งานได้ 3 รายการต่อบัญชี Google โดยไม่มีค่าใช้จ่าย ใช้เครื่องคำนวณราคาของ Blaze เพื่อสร้างต้นทุนโดยประมาณตามการใช้งานที่คาดการณ์
คุณต้องเปิดใช้ Pub/Sub และ Cloud Scheduler API สำหรับโปรเจ็กต์ โปรเจ็กต์ Firebase ส่วนใหญ่ควรเปิดใช้ฟีเจอร์เหล่านี้อยู่แล้ว คุณสามารถตรวจสอบได้ในคอนโซล Google Cloud
เขียนฟังก์ชันที่ตั้งเวลาไว้
ใน Cloud Functions for 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
ทำให้ฟังก์ชันที่ตั้งเวลาไว้ใช้งานได้
เมื่อคุณทําให้ฟังก์ชันที่ตั้งเวลาไว้ใช้งานได้ ระบบจะสร้างงานตัวตั้งเวลาและหัวข้อการเผยแพร่/การสมัครรับข้อมูลที่เกี่ยวข้องโดยอัตโนมัติ CLI ของ Firebase จะพูดชื่อหัวข้อ และคุณสามารถดูงานและหัวข้อในคอนโซล Google Cloud หัวข้อจะตั้งชื่อตามรูปแบบต่อไปนี้
firebase-scheduled-function_name-region
เช่น
firebase-scheduled-scheduledFunctionCrontab-us-east1.