|
การสร้าง Event Scheduler หรือ Job Schedule บน MySQL/MariaDB ตั้งเวลาทำงาน |
การสร้าง Event หรือ Job Schedule บน MySQL/MariaDB เพื่อสั่งให้ทำงานตามที่กำหนด นับว่าเป็นเรื่องยินดีอย่างยิ่งของ MySQL และ MariaDB ในเวอร์ชั่นใหม่ๆ ที่มี Events Scheduler หรือ Job Schedule ไว้สำหรับสั่งให้ Database ทำงาน ตามระยะเวลาที่กำหนด โดยเราสามารถสร้าง Event ในรูปแบบของ Job Schedule กำหนดเวลา เช่น ทุก นาที, ชั่วโมง , วัน ฯลฯ ให้ทำงานคำสั่ง แทนการใช้ php เรียก Query ซึ่งในวิธีเดิม เราจะต้องสร้างคำสั่ง php ให้ Query คำสั่งบน MySQL และจะต้องมี Request เรียก URL ของ php ให้ทำงาน แต่ถ้าเป็น Event เราจะลืมวิธีแบบเก่าๆ ได้เลย เพราะเมื่อเราสร้าง Event แล้ว โปรแกรมจะทำงานอัตโนมัติในทันทีเมื่อถึงเงื่อนไขของเหตุการณ์ที่สร้างขึ้น ซึ่งเหมาะกับการประยุกต์ใช้งาน เช่น ให้ Delete ข้อมูล ให้ Insert , Update หรือ Backup ข้อมูลไปยัง Table อื่นๆ หรือในอาจจะมีคำสั่งประเภทการ Backup Database , Call Stored Procedure ก็สามารถที่จะเรียกให้ทำงานจาก Event ได้เช่นเดียวกัน
MySQL/MariaDB Event Scheduler
ในการเริ่มต้นใช้งาน Event บน MySQL/MariaDB จะต้องทำการเปิด event_scheduler="ON" ให้เรียบร้อยก่อน โดยใช้คำสั่ง
SET GLOBAL event_scheduler="ON"

หรือสามารถเปิดได้จากเมนูบน phpMyAdmin

ถ้า Event ถูกเปิดออกจะแสดงสัญลักษณ์ On
การสร้าง Event แบบง่ายๆ
เราจะมาลองทดสอบการสร้าง Event โดยให้ทำการ Insert ข้อมูลลงใน Table ทุกๆ 1 นาที
mytable
CREATE TABLE `mytable` (
`id` int(11) NOT NULL,
`name` varchar(150) NOT NULL,
`email` varchar(150) NOT NULL,
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE `mytable`
ADD PRIMARY KEY (`id`);
ALTER TABLE `mytable`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ให้สร้าง Table แบบง่ายๆ โดยเก็บ ชื่อ,อีเมล์ และ วันที่เพิ่มข้อมูล

เปิด Query บน phpMyAdmin เพื่อ Query คำสั่งสำหรับการสร้าง Event

DELIMITER $$
CREATE EVENT `InsertData`
ON SCHEDULE EVERY '1' MINUTE
DO
BEGIN
INSERT INTO mytable (name,email) VALUES ('Name','[email protected]');
END$$
DELIMITER ;

Event ที่ได้

เมื่อคลิกไปที่เมนู Event จะเห็นรายการของ Event ที่เราได้ส้างไว้

ซึ่งอันที่จริงเราสร้างผ่าน GUI ของ phpMyAdmin ก็ได้เช่นเดียวกัน

สามารถที่จะ Add หรือ Edit รายการ Event ต่างๆ ผ่าน phpMyAdmin ได้เลย

จะเห็นว่าการสร้าง Event ผ่าน GUI ของ phpMyAdmin นั้นง่ายมาก มีตัวเลือกบอกชัดเจน ว่าจะตั้งค่าแบบไหนบ้าง

หลังจากที่ได้ Event แล้ว เมื่อกลับมาดู Table เราจะเห็นว่าข้อมูลจะถูก Insert ทุก ๆ 1 นาที
รูปแบบการตั้งเวลาต่างๆ
ทำงานทุกๆ 5 วินาที
CREATE EVENT event_name
ON SCHEDULE EVERY 5 SECOND
จากคำสั่งนี้ทำงานทุกๆ 5 วินาที
ทำงานทุกๆ 10 นาที
CREATE EVENT event_name
ON SCHEDULE EVERY 10 MINUTE
STARTS '2018-02-08 15:30:00'
จากคำสั่งนี้ทำงานครั้งต่อไปเมื่อเวลา 15:40:00 และบวกไปทุกๆ 10 นาที
ทำงานทุกๆ 1 ชั่งโมง
CREATE EVENT event_name
ON SCHEDULE EVERY 1 HOUR
STARTS '2018-02-08 15:30:00'
จากคำสั่งนี้ทำงานครั้งต่อไปเมื่อเวลา 16:30:00 และบวกไปทุกๆ 1 ชม.
ทำงานทุกๆ 1 วัน
CREATE EVENT event_name
ON SCHEDULE EVERY 1 DAY
STARTS '2018-02-08 15:30:00'
จากคำสั่งนี้ทำงานครั้งต่อไปเมื่อเวลา 2018-02-09 15:30:00 และบวกไปทุกๆ 1 วัน
ทำงานทุกๆ 1 เดือน
CREATE EVENT event_name
ON SCHEDULE EVERY 1 MONTH
STARTS '2018-02-08 15:30:00'
จากคำสั่งนี้ทำงานครั้งต่อไปเมื่อเวลา 2018-03-08 15:30:00 และบวกไปทุกๆ 1 เดือน
ทำงานครั้งเดียว
CREATE EVENT event_name
ON SCHEDULE AT '2018-02-08 15:30:00'
จากคำสั่งนี้ทำงานครั้งเดียวเมื่อเวลา 2018-02-08 15:30:00
สำหรับคำสั่งบน Event สามารถใส่คำสั่งได้ทุกอย่าง ไม่ว่าจะเป็นการ INSERT, UPDATE, DELETE หรือว่า Call Stored Procedure
.
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
   |
|
Create Date : |
2017-02-08 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|