十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql定时任务
10年积累的网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有双辽免费网站建设让你可以放心的选择与我们合作。
自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
如:每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
2. windows、linux 的定时任务 这个就不举例了,通过脚本定时去调用mysql执行
你这个不应该问"php可以做到吗?",而该问"数据库能做到吗?"
用管理员登录重置或者用户登录时判断日期后用php操作数据库重置.如果想通过php,不需要任何登录执行的话,那考虑的是怎么在不登录情况下把日期传过去.最终还是php操作,不是数据库自动进行.综上,php不能做到.
有二种方法:
1用MYSQL的存取过程:
具体步骤如下:
一、开启事件
查看event_scheduler状态
show variables like '%sche%';
修改event_schedule状态
set global event_scheduler=1;
(这部分出自)
二、创建事件
CREATE EVENT `NewEvent`
ON SCHEDULE EVERY 1 DAY STARTS '2010-11-16 06:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
update serialnumber set value=0
这样serialnumber 表value字段将每天早6点被清零
三、事件调用存储过程
创建存储过程
create PROCEDURE NewProcTest()
begin
update serialnumber set value=0;
end;
查看存储过程
show procedure status;
创建事件
CREATE EVENT `NewEvent`
ON SCHEDULE EVERY 1 DAY STARTS '2010-11-16 06:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
call NewProcTest()
第二种方法:
直接用PHP调用某公共代码,判断时间和是否更新过,然后做相应的处理!