【问题标题】:How to schedule tasks in PHP ? (Storing & running techniques)如何在 PHP 中安排任务? (存储和运行技术)
【发布时间】:2011-07-14 10:42:14
【问题描述】:

大家好 我正在为我的 PHP 项目使用 Zend 框架。基本上,我想自动运行的操作很少。我将使用 cron 作业来解决问题。 cron 作业将运行一个 php 脚本文件。

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

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

2-上传所有示例文件(1次)。

3-发送邮件(连续)。

所以我将在我的表中存储控制器和操作(创建示例文件)并将其重复时间设置为 5 并设置其执行时间。其他两个动作也是如此。

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

现在让事情变得更清楚,这个系统确实有效,但我正在考虑更好或改进的调度程序技术。将计划的操作存储在表格中听起来是个好主意,但我想知道是否有更好的方法?!

【问题讨论】:

  • 它们多久更改一次,通过什么界面?
  • 好吧,我有一个用于控制计划任务的 UI 屏幕。用户可以简单地从下拉列表中选择他想添加到表格中的任务,并指定任务的时间和重复。用户可以查看表中的所有任务,并且可以修改或删除其中的任何一个。任务本身定义一次并加载到下拉列表中。然后,用户可以选择任意数量的任务添加到数据库中的 cronjobs 表中。由于我们仍处于开发阶段,因此更改的频率可能取决于业务需求。

标签: php zend-framework cron scheduled-tasks


【解决方案1】:

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

【讨论】:

  • 嗯,我一直在寻找新的想法,因为我被要求使 cron 作业系统更加通用,以便它可以在任何应用程序或数据库上工作。这就是为什么我认为也许有更好的事情要做!
【解决方案2】:

我的方法是有一个循环脚本“清空”(将作业设置为“完成”)表。并且有更多具有不同时间的 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
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2010-09-11
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多