mata teras
SET GLOBAL event_scheduler = ON;
. Statusnya boleh dilihat dalam senarai proses MySQL. SET GLOBAL event_scheduler = OFF;
pemicu masa . Anda boleh menjadualkan acara untuk dilaksanakan satu kali atau secara berkala apabila trafik pelayan rendah. Dalam artikel ini, saya akan menerangkan apa yang perlu anda ketahui untuk mula menggunakan acara: Mulakan penjadual acara, tambahkan satu kali atau pelbagai acara lari, lihat acara yang ada, dan perubahan peristiwa. Saya juga akan berkongsi cara menggunakan catatan blog yang dirancang sebagai contoh praktikal untuk menggunakan acara MySQL.
Mula Penjadual Acara
Penjadual Acara MySQL adalah proses yang berjalan di latar belakang dan sentiasa mencari acara yang akan dilaksanakan. Sebelum membuat atau menjadualkan acara, anda perlu membuka penjadual terlebih dahulu dengan mengeluarkan arahan berikut:
mysql> SET GLOBAL event_scheduler = ON;
mysql> SET GLOBAL event_scheduler = OFF;
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
Peristiwa Penggunaan
Harus diingat bahawa apabila membuat acara, ia hanya boleh melakukan operasi yang pengguna MySQL yang mencipta acara itu mempunyai kebenaran pelaksanaan. Beberapa batasan lain termasuk:
Buat acara
Contoh berikut mencipta peristiwa:
mysql> SET GLOBAL event_scheduler = ON;
dan BEGIN
berputar di sekitar satu atau lebih pertanyaan yang akan dilaksanakan pada masa yang ditentukan. Oleh kerana titik koma diperlukan untuk menamatkan pernyataan END
, jika anda beroperasi melalui pelanggan, anda perlu menukar pemisah sebelum mengeluarkan pernyataan UPDATE
dan kemudian beralih kembali. Anda boleh menggunakan CREATE EVENT
untuk melihat senarai semua peristiwa yang ada. SHOW EVENTS
mysql> SET GLOBAL event_scheduler = OFF;
, contohnya: ON COMPLETION
mysql> SHOW PROCESSLIST ... Id: 79 User: event_scheduler Host: localhost db: NULL Command: Daemon Time: 12 State: Waiting on empty queue Info: NULL
: DROP EVENT
DELIMITER | CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END | DELIMITER ;
: EVERY
mysql> SHOW EVENTS ********************** 1. row ********************** Db: mysql Name: myevent Definer: dbuser@localhost Time zone: SYSTEM Type: ONE TIME Execute At: 2011-10-26 20:24:19 Interval Value: NULL Interval Field: NULL Starts: NULL Ends: NULL Status: ENABLED Originator: 0 character_set_client: utf8 collation_connection: utf8_general_ci
dan START
: END
CREATE EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION PRESERVE DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
INTERVAL 5 MINUTE
Jika anda ingin mengubah tingkah laku acara yang sedia ada dan bukannya memadamkannya dan mencipta semula, anda boleh menggunakan
. Sebagai contoh, untuk menukar jadual acara sebelumnya untuk dijalankan sekali sebulan, bermula pada pukul 1 pagi pada tarikh yang akan datang, anda boleh menggunakan arahan berikut:
ALTER EVENT
DROP EVENT myevent;
untuk menamakan semula acara, anda boleh menggunakan klausa
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
RENAME
CREATE EVENT myevent ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR DO BEGIN UPDATE mytable SET mycol = mycol + 1; END |
Untuk menunjukkan kepada anda contoh praktikal, katakan anda mempunyai blog dan anda ingin mempunyai pilihan untuk menjadualkan jawatan yang akan diterbitkan pada masa akan datang. Salah satu cara untuk mencapai matlamat ini ialah menambah bendera timestamp dan diterbitkan ke rekod pangkalan data. Skrip Cron akan dilaksanakan sekali seminit untuk memeriksa cap waktu dan bertukar bendera untuk sebarang artikel yang perlu diterbitkan. Tetapi ini nampaknya tidak cekap. Satu lagi cara untuk melakukan ini ialah menggunakan acara MySQL yang dicetuskan apabila anda ingin menerbitkan artikel. Borang penyertaan blog anda mungkin mempunyai kotak semak, dan memilihnya bermakna ini adalah jawatan yang dirancang. Di samping itu, borang itu akan mempunyai medan input untuk anda memasukkan tarikh dan masa jawatan yang perlu anda hantar. Skrip penerimaan akan bertanggungjawab untuk menambah entri blog ke pangkalan data dan menguruskan acara untuk menjadualkannya (jika bukan jawatan yang disiarkan dengan segera). Kod yang berkaitan adalah seperti berikut: Apabila menyimpan artikel ke pangkalan data, ia akan disimpan dalam keadaan yang digantung. Ini memberi anda peluang untuk menjadualkan acara (jika ia adalah jawatan yang dirancang), jika tidak, anda boleh mengemas kini status untuk diterbitkan dengan segera. Jika anda ingin mengedit artikel pada masa yang akan datang, anda boleh memadamkan acara menggunakan Ringkasan Anda kini harus mempunyai pemahaman yang kukuh tentang peristiwa MySQL dan bagaimana untuk membuat dan mengurus acara anda sendiri. Walaupun peristiwa tidak dapat menggantikan pekerjaan cron atau tugas yang dijadualkan, kerana peristiwa tidak dapat melaksanakan kod luaran (seperti skrip PHP), mereka adalah alternatif yang berguna kepada tugas-tugas yang berkaitan dengan masa yang khusus untuk pangkalan data MySQL. Seperti biasa, pastikan anda membaca dokumentasi rasmi jika anda berminat untuk mempelajari lebih lanjut. gambar dari Garsya / Shutterstock (bahagian FAQ ditinggalkan di sini kerana artikel itu terlalu panjang dan tidak sepadan dengan matlamat asal pseudo. Kandungan bahagian FAQ sangat berulang dengan teks asal, pseudo-asal adalah sukar dan mempunyai nilai yang rendah.mysql> SET GLOBAL event_scheduler = ON;
DROP EVENT IF EXISTS
dan menambahnya semula dengan masa yang dijadualkan baru. Soalan Lazim Mengenai Menggunakan Acara MySQL (FAQ)
Atas ialah kandungan terperinci Bekerja dengan Acara MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!