php - 我应该在 PHP 项目中使用什么进行简单的 cron 作业管理?

标签 php cron scheduling crontab scheduler

我想要在 PHP 项目中进行类似 cron 的简单管理 我想要一些东西:

  1. php job worker 只是放置在项目目录中某个子目录中的普通脚本
  2. 项目根目录下有/cron/daily、/cron/monthly ... 等子树,包含所有 workers
  3. 没有必要在添加每个 worker 时弄乱 crontab。
  4. 所有脚本都由运行部分之类的东西以相应的频率运行,并且它们各自的输出记录到单独的文件中,例如/var/log/projectname/cron/daily/somescript.log
  5. 如果/cron/daemon 目录包含应该永远(每分钟)运行但不超过 1 个实例的脚本,那就太好了

我曾在一个项目中使用过这种调度系统,并且非常喜欢它。它提供了许多简洁的东西:

  • 作业是项目脚本,位于项目目录中,由 git 跟踪。
  • 不需要 crontab 困惑。
  • 整理日志。
  • 守护进程很容易构建。

我只会在项目/cron 子目录上使用/bin/run-parts,但无法按照我的意愿拆分日志。拆分日志记录是一个非常好的功能。

所以,我只是想这种系统以前创建过很多次,有没有现成的PHP项目解决方案?基本上它只是一些更智能的运行部件等价物。是不是应该再写一遍?

附言还有很多特定于作业队列的解决方案,例如 Gearman。它们很棒,但是这个问题是关于项目 cron 作业的轻量级解决方案。

最佳答案

在我目前的工作中,我们采取了稍微不同的方法。我们使用 Jenkins (以前的 Hudson)满足我们 PHP 相关的调度需求。这很好,因为您可以利用现有的基础设施进行通知(jabber、电子邮件等),并且它与我们用于代码发布的其他构建作业并存。还可以实时查看控制台输出、获取每次运行的记录等。

我记录了我们最近组织 PHP 作业的方式,以便我们可以轻松地从 CLI 中利用我们的应用程序框架,这就是 Jenkins 与作业的接口(interface)。

这是关于组织用于 Jenkins 或 Hudson 的 PHP 批处理作业的帖子:

http://blog.shupp.org/2011/03/15/organizing-php-batch-jobs/

关于php - 我应该在 PHP 项目中使用什么进行简单的 cron 作业管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948499/

相关文章:

linux - 让 cron 作业等到另一个作业完成

python - Google App Engine - 保护 cron python 的 url

根据条件选择 OpenMP pragma

php - 如何在 Mac OS X 10.5 Leopard 上设置 PEAR

php - Class::getInstance 的起源/解释?

php - 更新数据库后只有几笔数据变化时,如何重新加载可变数据? (iOS)

php - Laravel 调度程序未按预期工作

PHP 警告权限在 session_start() 上被拒绝 (13)

Java - 安排每日任务

c - 如何更改 CFS 中使用的数据结构