我正在尝试创建数据库中托管的倒计时。倒计时将根据个人用户帐户创建日期设置为24小时(我已经在收集创建日期)。当倒计时到零时,将运行SQL
查询以更新表。然后再继续循环24小时,永远做同样的事情。
Q1:我不确定从哪里开始或者读什么。对此的指导将是一个很大的帮助。
Q2:每个用户收集h:i:s(小时),不断倒计时,使用很多我的CPU?
答案 0 :(得分:0)
请勿检查一直留下的时间。让DB自动为您完成。
创建用户帐户时,您可以在24小时后set up an event in the DB。它会自动执行。
答案 1 :(得分:0)
独立于数据库的方法是从“now”存储24小时的初始alarm_timestamp,并定期运行调度程序/时钟进程(每分钟,每小时,无论粒度是否合适)。每个时钟“tick”运行一个轻量级查询,选择alarm_timestamp< systimestamp和processed_timestamp为null,然后将处理后的时间戳作为状态位进行翻转,以指示处理记录的时间,并且下次不会显示。
所以它会是这样的:
select * from alarms
where alarm_triggered_ts is null
and alarm_timestamp < current_timestamp
这可以避免重复更新数据库时间戳,这通常是我们实现拍卖网站,调度程序等的方式。系统时钟自动“更新”。
您唯一的选择是如何触发预定的“tick”处理程序。使用系统级调度程序,cron等或使用MySQL事件处理程序
http://dev.mysql.com/doc/refman/5.1/en/events-overview.html
为了提高性能,长期可以将记录从警报表中移出,或者将alarm_timestamp列值设置为null,以便不再对其进行索引,以确保索引保持较小。