PHP:每周和每隔一周的调度(预定)

时间:2011-07-31 21:33:32

标签: php mysql scheduling

我对我接手的项目有疑问。我正在转换其他人编写的MS Access应用程序并将其转换为MySQL / PHP Web应用程序。大部分已经完成,但是,当涉及到该应用程序的调度部分时,我处于停滞状态。

我需要有一份“时间表”来完成工作。因此,我会运行一个报告,它会在数据库中搜索某一天,例如,2011年3月15日。它将基于当天的数据库记录构建它,并将构建一个针对打印优化的报告。

应用程序本身最初是为MS Access编写的,因此,默认情况下,MS ACCESS允许GUI复制/粘贴。话虽如此,最终用户完成调度的方式是,他们会从模板中复制/粘贴以构建特定客户的“每周”时间表。例如,假设是每周注册的新客户,最终用户将转到模板(MS Access)复制预定义为“每周”的所有行,然后将其粘贴到客户的部分。

显然,我不想,也不应该走那条路。

我想知道的是,因为这是我做过的最大的项目,我正在做这个自由职业者(我做编程作为一种爱好 - 这是一个好处),如果有人能指出我的话进入一个让我走上正确轨道的方向。

“客户”要么是“每周”计划,要么是“每隔一周”计划。在数据库中,有一个“current_schedule”选项告诉我它们是“每周”还是“每隔一周”,但是让webapp实际上“基于”构建“时间表”会很好,几乎就像“即将到来的约会“或类似的事情。我之前已经看过这个,但我只是不知道进入的逻辑或方向。另外,我想重新安排某些项目,一旦我对上一个问题有了基本的了解,这应该很容易。建立时间表并在屏幕上显示它们。

我目前唯一能想到的是构建一个可以获取数据库选项的脚本,然后将日程表“构建”到数据库中。问题是,如果我想要更换一个客户,然后再次运行“scheuduler builder”,它会搞砸所有东西 - 或者我可以对其进行检查,这将检查它是否已经构建并且然后“保护”该客户不被重建,但似乎比需要更多的工作。我可能是错的,这就是为什么我希望你们至少给我一些想法。

像往常一样感谢先进。

1 个答案:

答案 0 :(得分:1)

如果PHP / MySQL应用程序在Windows上,您应该使用任务计划程序每周运行一个perl或PHP脚本,以检查需要在数据库中更新的内容,并执行此操作。我推荐Strawberry Perl,用于windows的perl解释器。您只需安装它install the DBI module,并通过该脚本运行您的更新,该脚本由操作系统安排每周运行一次。该脚本将根据它在数据库中看到的内容运行不同的任务。

如果设置在UNIX计算机上,那么你会做同样的事情,除了通过“任务计划程序”安排每周运行一个perl脚本,你可以通过cron完成。请参阅man crontabman cron。 perl解释器内置于每个UNIX系统中,因此您只需要确保安装了DBI模块。这就是我总是在我的数据库上运行定期任务的方式:通过操作系统安排的脚本。