我正在开发一个web应用程序(PHP/MySQL),在这个应用程序中,我需要实现定时器(record id
在expiration_date
上过期),其中过期涉及更新记录的state
,并根据需要执行任意代码。
我基本上需要一个BPMN计时器事件。
我考虑过的方案中,没有一个是令我兴奋的:
在PHP应用程序中,这通常是如何做到的?
发布于 2011-08-25 09:46:56
我也会选择cronjob选项。
不过,我的应用程序中也有逻辑,知道如何处理(或忽略)过期的记录。像cron这样的服务可能会中断,所以不用依赖它是很好的。
不幸的是,DBMS并没有给我们很大的灵活性,而且如果遇到这些“过期”记录之一,您将不想进行数据库维护。
最好通过查询、视图的使用或简单的应用程序逻辑来排除它们。
发布于 2011-08-25 10:59:04
以下是你没有考虑过的一种选择:
您可以使用MySQL事件调度器定期在数据库中运行存储的过期例程。
这种方法的一些优点是:
缺点:
event_scheduler=on
放入my.cnf
或以其他方式启用它。示例:
DROP EVENT IF EXISTS expire_event;
DELIMITER //
CREATE EVENT expire_event
ON SCHEDULE EVERY 1 MINUTE
DO BEGIN
DELETE FROM data WHERE time < UNIX_TIMESTAMP(NOW() - INTERVAL 1 HOUR);
END //
DELIMITER ;
上面的代码将每分钟从数据表中删除任何行,这些数据表的UNIX时间戳超过1小时。
发布于 2011-08-24 17:43:16
我会选择cronjob选项。
https://stackoverflow.com/questions/7184144
复制相似问题