jetfirephp / jobby
无需修改crontab即可管理所有cron任务。处理锁定、日志记录、错误邮件等。
dev-master
2016-12-14 14:46 UTC
Requires
- php: >=5.4
- jeremeamia/superclosure: ^2.2
- mtdowling/cron-expression: ^1.0
- symfony/process: ^2.7|^3.0
This package is not auto-updated.
Last update: 2024-09-14 19:20:21 UTC
README
安装主jobby cron任务,它会管理所有离线任务。无需修改crontab即可添加任务。Jobby可以处理日志记录、锁定、错误邮件等。
新仓库:我们将jobby
迁移到了Github组织。请更新您的远程链接为https://github.com/jobbyphp/jobby.git
。
功能
- 维护一个主crontab任务。
- 任务通过PHP运行,因此您可以在任何程序性条件下运行它们。
- 使用普通的crontab计划语法(由优秀的
cron-expression
提供支持)。 - 在任何给定时间只运行一个任务副本。
- 当任务以错误状态退出时发送电子邮件。
- 如果crontab用户有
sudo
权限,则以另一个用户的身份运行任务。 - 只在特定的主机名上运行(在webfarm中很有用)。
- 理论上的Windows支持(但从未测试过)
示例
<?php require_once __DIR__ . '/vendor/autoload.php'; $jobby = new Jobby\Jobby(); // Every job has a name $jobby->add('CommandExample', [ // Run a shell commands 'command' => 'ls', // Ordinary crontab schedule format is supported. // This schedule runs every hour. // You could also insert DateTime string in the format of Y-m-d H:i:s. 'schedule' => '0 * * * *', // Stdout and stderr is sent to the specified file 'output' => 'logs/command.log', // You can turn off a job by setting 'enabled' to false 'enabled' => true, ]); $jobby->add('ClosureExample', [ // Invoke PHP closures 'closure' => function() { echo "I'm a function!\n"; return true; }, // This function will run every other hour 'schedule' => '0 */2 * * *', 'output' => 'logs/closure.log', ]); $jobby->run();
安装
建议通过 Composer 安装Jobby。
$ composer require hellogerard/jobby
然后添加以下行到您的(或任何人的)crontab中
* * * * * cd /path/to/project && php jobby.php 1>> /dev/null 2>&1
Jobby安装后,您可以将示例文件复制到项目根目录。
$ cp vendor/hellogerard/jobby/resources/jobby.php .
支持选项
每个任务都需要以下选项
以下列出的选项可以应用于单个任务或通过Jobby
构造函数全局应用。全局选项将作为默认值,而单个任务可以覆盖它们。
致谢
在之前开发过,但受whenever的启发。