人/小时 / yii2-cronjobs
yii2 的 cron 作业调度器
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-28 18:05:15 UTC
README
将 crontab 放置在控制台脚本中的最简单方法。
此扩展基于 此存储库(用于 yii1)和 此存储库(用于 yii2)。
人/小时包添加了一些更多功能,例如
- 额外日志记录
- 正确的 cron 标签功能
安装
- 步骤 1: 安装此扩展的最佳方式是通过 composer。
运行以下命令
php composer.phar require --prefer-dist peopleperhour/yii2-cronjobs "dev-master"
或者将以下内容添加到你的 composer.json 文件的 require 部分。
"peopleperhour/yii2-cronjobs": "dev-master"
- 步骤 2: 在控制台配置中设置别名 @runnerScript。这是运行脚本的全路径(我找不到获取运行脚本的其他方法)。根据你的项目更改运行脚本路径。
Yii::setAlias('@runnerScript', dirname(dirname(dirname(__FILE__))) .'/yii');
- 步骤 3: 添加到控制台配置
'controllerMap' => [
'cron' => [
'class' => 'peopleperhour\cronjobs\CronController'
],
],
- 步骤 4: 将任务添加到系统调度程序(Unix 上的 cron,Windows 上的任务计划程序,systemd 服务)以每分钟运行一次
* * * * * /path/to/yii/application/protected/yii cron
在参数数组中添加 cron 设置
'params' => [
'test/example1' => [
'cron' => '* * * * *',
],
'test/example2' => [
'cron' => '10 * * * *',
],
],
- 步骤 5: 添加日志记录
提供了两个级别的日志记录。
a) 记录 cron 机制输出
记录进入 cron 机制的日志事件。
示例输出
2015-06-11 09:48:36 [-][-][-][info][cronjobs] 运行任务 [1]: runtestcron test in /var/www/vendor/peopleperhour/yii2-cronjobs/CronController.php:260 2015-06-11 09:48:36 [-][-][-][info][cronjobs] 运行 1 个任务(s) at Thu, 11 Jun 2015 09:48:36 +0000 in /var/www/vendor/peopleperhour/yii2-cronjobs/CronController.php:264
设置
在你的配置中,在你的日志组件中设置以下内容
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'logFile' => 'somelogfile.log',
'categories' => ['yii2-cronjobs']
],
],
],
]
"categories" 元素是 peopleperhour/yii2-cronjobs 扩展中默认使用的类别。如果你想更改它,则在上面的名称中输入所需的名称,并在控制器映射中设置 logsCategory 字段。
例如。
'controllerMap' => [
'cron' => [
'class' => 'peopleperhour\cronjobs\CronController',
'logsCategory' => 'somenewcategory',
],
],
b) 记录运行命令的输出
记录运行命令的输出有两种方式。
第一种是通用的方式,你需要在控制器映射中添加文件名。
例如。
'controllerMap' => [
'cron' => [
'class' => 'peopleperhour\cronjobs\CronController',
'logFileName' => 'somelog',
],
],
第二种方式是通过更改 cron 规范使用 "cron-stdout" 指令,可以具体指定每个 cron 命令的输出。
'params' => [
'test/example1' => [
'cron' => '* * * * *',
'cron-stdout' => 'example1-out',
'cron-stderr' => 'example1-err'
],
'test/example2' => [
'cron' => '10 * * * *',
],
],
上面的设置将覆盖控制器映射中的通用输出并将输出发送到指定的 cron-stdout 日志文件。
- 步骤 6: 添加标签以在特定环境中运行
如果你需要在运行 crons 时分离环境,你可以在 cron 配置中添加 cron-tags 参数
'params' => [
'test/example1' => [
'cron' => '* * * * *',
'cron-stdout' => 'example1-out',
'cron-stderr' => 'example1-err'
'cron-tags' => 'live staging'
],
],
然后在你调度程序内部使用请求的标签运行 cron 命令
例如。
* * * * * /path/to/yii/application/protected/yii cron live