2011-03-13 63 views
2

大家好 我为我的PHP项目使用了Zend框架。基本上我有几个动作需要自动运行。我将使用cron工作来完成这个诀窍。 cron作业将运行一个php脚本文件。如何在PHP中安排任务? (存储和运行技术)

直到现在一切似乎正常。现在我在我的数据库中创建了一个表,并存储了我需要在其中运行的操作。例如我需要执行以下操作:

1-创建一个示例文件(5次)。

2-上传所有样本文件(1次)。

3发送邮件(连续)。

所以我会在我的表存储(创建一个样本文件)控制器和行动,并设置其重复时间为5,还设置了执行时间。对于其他两个动作也是如此。

现在脚本文件运行的每一分钟。在脚本文件中,我将选择表中执行时间等于当前时间的所有记录,然后运行它们。

现在做的事情只是清除该系统的实际工作,但我想一个更好的或改进的调度技术。在表格中存储预定的动作听起来像一个好主意,但我想知道是否有更好的方法?!

+0

他们多久更换一次,并通过什么接口? – alex 2011-03-13 12:48:44

+0

好吧,我有一个用于控制计划任务的UI屏幕。用户只需从下拉列表中选择他想添加到表格中的任务,然后指定任务的时间和重复。用户可以查看表中的所有任务,并可以修改或删除其中的任何任务。任务本身被定义一次并加载到下拉列表中。然后用户可以选择任意数量的任务添加到数据库中的cronjobs表中。由于我们仍处于开发阶段,这些变化的频率可能取决于业务需求。 – Songo 2011-03-13 20:58:39

回答

0

这对我来说似乎很好。您正在使用cron作业来运行PHP脚本,该脚本从数据库表中选择要执行的匹配记录。只要数据库中的数据规范化,存储数据将是一种有效的方式。监视服务器上的负载,并根据需要进行调整。

+0

好吧,我正在寻找新的想法,因为我被要求使cron作业系统更广义化,以便它可以在任何应用程序或数据库上工作。这就是为什么我认为也许有更好的事情要做! – Songo 2011-03-13 21:04:21

0

我的aproach是有一个循环脚本,“清空”(工作集为“已完成”)表。而且有更多不同时间的CRON填满桌子。所以工作流程是这样的:

minute: nothing to do 
minute: nothing to do 
hour: added export feed update 
minute: export feed update finished 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
minute: nothing to do 
... 
minute: nothing to do 
five_hours: added "clear the cache" 
minute: clear cache finished 
minute: nothing to do 
minute: nothing to do 
...