|
การสร้าง 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"
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155837.jpg?v=1001)
หรือสามารถเปิดได้จากเมนูบน phpMyAdmin
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155840.jpg?v=1001)
ถ้า 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 แบบง่ายๆ โดยเก็บ ชื่อ,อีเมล์ และ วันที่เพิ่มข้อมูล
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155844.jpg?v=1001)
เปิด Query บน phpMyAdmin เพื่อ Query คำสั่งสำหรับการสร้าง Event
![](/images/adv.jpg)
DELIMITER $$
CREATE EVENT `InsertData`
ON SCHEDULE EVERY '1' MINUTE
DO
BEGIN
INSERT INTO mytable (name,email) VALUES ('Name','[email protected]');
END$$
DELIMITER ;
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155849.jpg?v=1001)
Event ที่ได้
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155905.jpg?v=1001)
เมื่อคลิกไปที่เมนู Event จะเห็นรายการของ Event ที่เราได้ส้างไว้
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155947.jpg?v=1001)
ซึ่งอันที่จริงเราสร้างผ่าน GUI ของ phpMyAdmin ก็ได้เช่นเดียวกัน
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155951.jpg?v=1001)
สามารถที่จะ Add หรือ Edit รายการ Event ต่างๆ ผ่าน phpMyAdmin ได้เลย
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155954.jpg?v=1001)
จะเห็นว่าการสร้าง Event ผ่าน GUI ของ phpMyAdmin นั้นง่ายมาก มีตัวเลือกบอกชัดเจน ว่าจะตั้งค่าแบบไหนบ้าง
![Event Job Schedule MySQL and MariaDB Event Job Schedule MySQL and MariaDB](https://www.thaicreate.com/upload/stock/20170208155959.jpg?v=1001)
หลังจากที่ได้ 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 : |
![](/images/resource/startrue.gif) ![](/images/resource/startrue.gif) ![](/images/resource/startrue.gif) |
|
Create Date : |
2017-02-08 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|