人/小时/yii2-cronjobs

yii2 的 cron 作业调度器

安装次数: 11,931

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 5

分支: 37

公开问题: 1

类型:yii2-extension

dev-master 2015-11-30 13:45 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:05:15 UTC


README

将 crontab 放置在控制台脚本中的最简单方法。

此扩展基于 此存储库(用于 yii1)和 此存储库(用于 yii2)。

人/小时包添加了一些更多功能,例如

  1. 额外日志记录
  2. 正确的 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