ถ้าท่านไหนเคยใช้ Heroku หรือ Openshift จะพบว่าเว็บที่ให้บริการ cloud app แบบนี้จะมีสิ่งที่เรียกว่า App idle ซึ่งจะทำให้แอปคุณไม่สามารถทำงานได้ เมื่อไม่มีคนเข้ามาแล้ว เท่านั้นชั่วโมง เราจึงต้องใช้ cronjob เพื่อ หลอกระบบว่ามีคนเข้ามาในเว็บเราเพื่อให้แอปของเราสามารถรันต่อไปได้
ถึงอย่างนั้นก็มีเว็บให้บริการ cronjob ฟรี เช่น setcronjob.com แต่ว่า เว็บ cronjob ฟรีนั้นโดยส่วนใหญ่ (น่าจะทั้งหมด) จะต้องเข้ามาต่ออายุใหม่ทุกเดือน ดังนั้นถ้าหากเราลืมต่ออายุเมื่อไรแอปเราจะเดี้ยงทันที บริการ host ฟรีก็มักไม่มี cronjob มาให้ ส่วน host ที่มี cronjob นั้นต้องเช่า แต่ทว่า คอนเซปส่วนตัวของผมคือ สร้างทุกอย่างจาก 0 บาท เพราะถ้าไม่กำไรก็มีแค่เท่าทุนไม่มีคำว่าขาดทุน จนกระทั้งผมได้รู้จักกับ parse.com
เริ่มต้นการใช้งาน parse.com โดยเข้าไปที่หน้าเว็บ กด try it free แล้ว login with facebook ระบบจะเติมข้อมูลที่จำเป็นให้เรา
ระบบจะถามข้อมูลอีกเล็กน้อย รวมทั้งรายละเอียดของแอปแรกที่เราจะสร้าง กรอกให้เรียบร้อยจนกระทั้งถึงหน้าที่เข้า Dashboard ก็จะเป็นอันเสร็จพิธีการสมัคร
จากนั้นติดตั้งโปรแกรมของ Parse ลงในเครื่องครับ
สำหรับ windows ติดตั้งโปรแกรมได้ ที่นี่
สำหรับ Linux และ Mac ให้พิมพ์คำสั่งดังนี้
curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash
หลังจากนั้นสำหรับ windows ให้เปิด ParseConsole.exe แล้ว Mac และ Linux เปิด terminal ขึ้นมา
เตรียมโปรเจคด้วยคำสั่ง
parse new <ชื่อโฟลเดอร์ที่ใช้เก็บไฟล์>
จากนั้นเมื่อเข้าไปใน folder ที่เก็บไฟล์มาจะพบไฟล์เพิ่มขึ้นมาที่ cloud/main.js
เพิ่มบรรทัดดังนี้ครับ (แก้ชื่อฟังก์ชันเป็นฟังก์ชันคุณเอง และ urlที่ทำ cronjob ด้วย)
Parse.Cloud.job("ชื่อฟังก์ชัน",function(request, status){
Parse.Cloud.httpRequest({url:"เว็บที่cronjob"}).then(function(response) {
status.success("cronjob complete");
});
});
จากนั้นกดบันทึกไฟล์แล้วสั่ง
parse deploy
รอจนทำงานเสร็จ กลับมาที่เว็บ parse.com เลือก core > job
จากนั้นกดปุ่ม Scheduled a Job ใต้ชื่อบัญชีเรา
แล้วตอนนี้ระบบจะให้เราตั้งเวลา cronjob แล้ว ตั้งเวลาที่คุณต้องการเลยครับ
แค่นี้เราก็จะมี cronjob ฟรีใช้ตลอดชีพแล้วครับ เอามาไว้ใช้กระตุ้น app idle ได้ชิวๆ
***หมายเหตุ ถ้าต้องการทำ cronjob มากกว่า 1 เว็บ เนื่องจากระบบ parse จำกัดบัญชีฟรี ได้เพียง 1 job เท่านั้น เราสามารถ ใช้ callback ของฟังก์ชัน Parse.Cloud.httpRequest เพื่อเรียก Parse.Cloud.httpRequest ฟังก์ชันต่อไปได้ แต่ในชั้นในสุดของ callback ต้องสั่ง status.success เสมอไม่เช่นนั้นในหน้า Job status จะขึ้นว่า failed และ เว็บที่ทำ cronjob ไป ต้องส่งค่า http.status กลับเป็น 200 เสมอไม่เช่นจะขึ้นว่า job failed ***