cronjob / trigger,可以每天更新数据库

时间:2009-08-11 22:05:48

标签: php mysql windows windows-vista

我使用MYSQL作为我的数据库,PHP作为我的编程语言。我想运行一个cron作业,该作业将持续到当前系统日期与我的数据库表中名为“PROJECT”的“deadline(date)”列匹配。一旦日期相同,就必须运行更新查询,这将把状态(项目表的字段)从“打开”更改为“关闭”。

我不确定cron作业是最好的方法,还是我可以使用触发器,或者可能是其他的东西。我也使用Apache作为我的网络服务器而我的操作系统是windows vista。

4 个答案:

答案 0 :(得分:1)

如果您的操作系统是Vista,则相当于cronjob是计划任务。 MySQL没有在日期更改时运行触发器的工具,因此执行相同操作的PHP脚本是一个不错的选择。

您所要做的就是打开调度程序(控制面板>系统和维护>管理工具>计划任务)并创建一个新任务。

例如,如果PHP安装在C:\PHP\且您的脚本位于C:\htdocs\tasks\close_projects.php,则需要使用以下操作创建任务:

  

操作:启动程序
  计划/脚本: C:\PHP\php.exe
  添加参数: close_projects.php
  开始于: C:\htdocs\tasks\

根据您的需要调整其余设置。 (对于您的示例,您希望使用每日任务。)


另一种选择是在当天的第一个请求上完成您的任务。在这种情况下,您需要添加一些在每个页面加载上运行的PHP代码。只需存储上次请求的日期,如果当前请求是昨天发出的,则运行您的SQL语句。

答案 1 :(得分:1)

由于某些主机上缺少cron,我曾经为“延迟任务”编写了一组类。我意识到某些任务不必在您指定的时间运行,但是可以将它们推迟到第一次客户端请求服务器时。

希望它可能会有所帮助 - ZIP

答案 2 :(得分:0)

UPDATE project SET status='closed' WHERE deadline<=CURDATE();

设置计划任务以运行此查询应该是微不足道的。

答案 3 :(得分:0)

你在运行什么版本的mySql?

mySql支持自5.1.6以来的时间触发器

http://dev.mysql.com/tech-resources/articles/event-feature.html

.K