首页 文章

构建一个cron作业调度程序[关闭]

提问于
浏览
5

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

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

Problem 1: The setup of the application itself

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

  • 第一种方法是创建一个文件夹 scripts 并在其中创建一个公共引导程序文件,其中我创建一个单独的脚本,并在每个脚本中为每个脚本添加一个cron任务crontab文件,任务将是 ***** php /path/to/scripts/folder/cronScript_1.php .

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

Problem 2: The interface to the application

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

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

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


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

Note

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

谢谢 .

2 回答

  • 4

    对于问题2:应用程序的界面非常容易使用非技术人员(会计师,仓库主管)能够进入并创建工作 .

    比以root用户身份登录服务器,编辑crontab,记住模式和保存要容易得多 . 另外,每当他们想要向crontab添加内容时,每个人都会被称为“crontab人” .

    至于设置应用程序本身,我会让cron调用一个脚本并让该脚本运行其余的脚本 . 这样你只需要1个cron条目 . 请注意,如果运行作业需要很长时间,则需要确保在没有其他实例运行的情况下脚本才会开始运行 . 否则,您最终可能会运行两次相同的作业 .

  • 0

    只是我的意见,但我个人喜欢1和2,取决于你的脚本打算完成什么 . 例如,我们主要使用所有cron条目执行1,因为它很容易查看/ etc / crontab,并且可以一目了然地查看应该运行的内容 . 但是,有时需要每分钟调用一个脚本,因为脚本中的逻辑将确定在该分钟内运行的内容 . (即数百万用户需要不断处理,因此您可以获得用户在每小时内执行的操作的公式)

    另请查看Gearman(http://gearman.org/) . 它使您能够在一台计算机上运行cron脚本,然后将作业切片为较小的位,并将这些位移植到其他服务器进行处理 . 您可以完全控制您想要采用它的 Map /缩小方面的距离 . 它极大地帮助了我们,并允许我们每分钟处理数千个算法脚本 . 如果我们需要更多功率,我们只需启动更多“主力”节点,Gearman会自动检测并利用它们 .

    我们目前在命令行上执行所有操作,并且不使用cPanel,Plesk等,所以我无法证明从其中一个后端编辑crontab是什么感觉 . 您可能需要考虑让一个人成为您团队中的crontab“看门人” . 将预期的crontab条目放入项目代码中的非Web可访问文件夹中 . 然后,每当对文件的更改推送到版本控制时,该人员都应该SSH到适当的计算机并进行更改 . 我不确定你的内部结构,所以这可能是也可能不可行,但是开发人员能够看到crontab将执行脚本的方式是个好主意 .

相关问题