最常用的做法是使用UNIX的cron直接執(zhí)行Java程序。
成都創(chuàng)新互聯(lián)是專業(yè)的項(xiàng)城網(wǎng)站建設(shè)公司,項(xiàng)城接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行項(xiàng)城網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
并不需要在Java做的那么復(fù)雜。
Windows服務(wù)器也有類似于cron的任務(wù)管理功能,同理
---------------------------
Tomcat不是用來(lái)管理定時(shí)任務(wù)的,如果沒有HTTP請(qǐng)求,Servlet是不會(huì)被執(zhí)行的。
建議lz把定期執(zhí)行的處理做成一個(gè)獨(dú)立的Java程序,用cron執(zhí)行。
如果不想寫?yīng)毩⒌腏ava程序,也可以用cron定期向Tomcat發(fā)送Http請(qǐng)求,但是,這樣做的話注意程序處理時(shí)間不能太長(zhǎng),因?yàn)镠TTP通信有timeout的制約。
mysql如何查看定時(shí)器有沒有執(zhí)行
1.查看是否開啟evevt與開啟evevt。
1.1、MySQL evevt功能默認(rèn)是關(guān)閉的,可以使用下面的語(yǔ)句來(lái)看evevt的狀態(tài),如果是OFF或者0,表示是關(guān)閉的。
show VARIABLES LIKE '%sche%';
1.2、開啟evevt功能
SET GLOBAL event_scheduler = 1;
2.創(chuàng)建定時(shí)器的過(guò)程
2.1、創(chuàng)建測(cè)試表test
drop table if exists test;
create table test
(
id int(11) not null auto_increment primary key,
time datetime not null
) engine=innodb default charset=utf8;
2.2、創(chuàng)建evevt要調(diào)用的存儲(chǔ)過(guò)程test_proce
delimiter //
drop procedure if exists test_proce//
create procedure test_proce()
begin
insert into test(time) values(now());
end//
delimiter ;
2.3、開啟evevt(要使定時(shí)起作用,MySQL的常量GLOBAL event_scheduler必須為on或者是1)
執(zhí)行show variables like 'event_scheduler';查看evevt是否開啟;
若沒開啟執(zhí)行set global event_scheduler='on';
2.4、創(chuàng)建事件test_event(其作用:每隔一秒自動(dòng)調(diào)用test_proce()存儲(chǔ)過(guò)程)
drop event if exists test_event;
create event test_event
on schedule every 1 second
on completion preserve disable
do call test_proce();
2.5、開啟事件test_event
mysql實(shí)現(xiàn)定時(shí)任務(wù)是有一個(gè)時(shí)間調(diào)度器,所以首先要查看這個(gè)時(shí)間調(diào)度器是否開啟。
查看的命令:
show variables like 'event_scheduler'
如果沒有打開,則設(shè)置打開。設(shè)置的命令是:
set global event_scheduler = ON; 或set global event_scheduler = 1;
確定打開事件調(diào)度器后,我們可以創(chuàng)建一個(gè)定時(shí)任務(wù)。
創(chuàng)建定時(shí)任務(wù)的語(yǔ)法為:
create event 定時(shí)任務(wù)名稱
ON schedule 定時(shí)時(shí)間
do
定時(shí)任務(wù)所要執(zhí)行的sql;
example:每隔一分鐘往表tt里插入一條數(shù)據(jù)
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1);
如果要執(zhí)行多條sql則可用多個(gè)do
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1);
do
.......
使用命令查看所有的定時(shí)任務(wù)及其狀態(tài):
show processlist
如果要停掉某個(gè)定時(shí)任務(wù)可以使用:
alter event 定時(shí)任務(wù)名 ON
COMPLETION PRESERVE DISABLE;
example:
alter event insert_tt ON
COMPLETION PRESERVE DISABLE;
開啟某個(gè)定時(shí)任務(wù):
alter event 定時(shí)任務(wù)名稱 ON
COMPLETION PRESERVE ENABLE;