构建一个cron作业调度程序

Son*_*ngo 5 php cron zend-framework

目前我正在尝试构建一个好的调度程序系统作为在我的系统上设置和编辑cron作业的接口.我的系统是在Linux服务器上使用Zend framework 1.11.11构建的.

我有两个主要问题,我想要你的建议:

问题1:应用程序本身的设置

我有2种方法来运行cron作业:

  1. 第一种方法是创建一个文件夹scripts并在其中创建一个公共引导程序文件,我只加载我需要的资源.然后,对于每个任务,我将创建一个单独的脚本,并在每个脚本中包含引导程序文件.最后,我将在crontab文件中为每个脚本添加一个cron任务,任务将类似于***** php /path/to/scripts/folder/cronScript_1.php.

  2. 其次将cron作业视为正常请求(无特殊引导).在crontab文件中为每个脚本添加一个cron任务,任务就像这样***** curl http://www.mydomain.com/module/controller/action.

问题2:应用程序的界面

添加cron作业也可以通过两种方式完成:

  1. 对于每个任务,crontab文件中都有一个条目.当我想添加一个新任务时,我必须通过cPanel或任何其他方式来编辑crontab(可能不可用).

  2. 将任务存储在数据库中,并提供用于与数据库交互的UI(网格以添加少量任务和配置).之后,在每分钟运行的crontab文件中只写入1个cron作业.此作业将从数据库中选择所有作业,并检查是否存在应立即运行的作业(任务的存储时间将与服务器的当前时间进行比较).


在您看来哪种方式更适合每个部分实施?是否有一个现成的解决方案,一般更好?

注意

我遇到了Quartz将寻找现成的解决方案.这是我正在寻找的还是完全不同的东西?

谢谢.

Mic*_*art 4

只是我的意见,但我个人喜欢 1 和 2,具体取决于您的脚本打算完成的任务。例如,我们大多数情况下都会对所有 cron 条目执行 1 操作,因为查看 /etc/crontab 并一目了然地了解应该运行的内容变得非常容易。然而,有时需要每分钟调用一个脚本,因为脚本中的逻辑将确定在那一分钟内运行什么。(即需要不断处理数以百万计的用户,因此您可以制定一个公式来计算用户在一小时内的每一分钟要做什么)

另请查看 Gearman (http://gearman.org/)。它使您能够在一台计算机上运行 cron 脚本,然后将作业分割成更小的部分,并将这些部分分配给其他服务器进行处理。您可以完全控制您想要将其映射/减少方面进行多远。它给我们带来了巨大的帮助,使我们能够每分钟处理数千个算法脚本。如果我们需要更多动力,我们只需启动更多“主力”节点,Gearman 就会自动检测并利用它们。

目前,我们在命令行上完成所有操作,不使用 cPanel、Plesk 等,因此我无法证明从这些后端之一编辑 crontab 的感觉如何。您可能需要考虑让一个人担任您团队中的 crontab“看门人”。将预期的 crontab 条目放入项目代码中不可通过 Web 访问的文件夹中。然后,每当对文件的更改被推送到版本控制时,该人员都需要通过 SSH 连接到适当的计算机并进行更改。我不确定您的内部结构,因此这可能可行,也可能不可行,但对于开发人员来说,能够看到 crontab 执行脚本的方式是个好主意。