我希望在 PHP 项目中实现一个简单的类似 cron 的管理系统,以下是我的一些要求:
附注:还有许多特定于作业队列的解决方案,如 Gearman。它们很棒,但这个问题是关于项目 cron 作业轻量级解决方案的。
- php 作业工作者只是普通的脚本,放置在项目目录的某个子目录中。
- 在项目根目录下有诸如 /cron/daily、/cron/monthly 等子目录,包含了所有的工作者。
- 不需要为每个工作者都添加 crontab。
- 所有脚本都由类似于 run-parts 的程序以相应的频率运行,并将它们各自的输出记录在单独的文件中,例如 /var/log/projectname/cron/daily/somescript.log。
- 最好有一个 /cron/daemon 目录,包含应该永久运行(每分钟运行一次)但不超过 1 个实例的脚本。
- 作业是项目脚本,位于项目目录中,由 git 跟踪。
- 无需修改 crontab。
- 日志已分类。
- 守护进程易于构建。
附注:还有许多特定于作业队列的解决方案,如 Gearman。它们很棒,但这个问题是关于项目 cron 作业轻量级解决方案的。