fedemotta/yii2-cronjob

Yii2 扩展,用于帮助创建自动化控制台脚本

安装次数: 29,953

依赖项: 0

建议者: 0

安全: 0

星标: 22

关注者: 8

分支: 9

公开问题: 1

类型:yii2-extension

v1.1 2015-10-07 20:47 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:04:16 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Yii2 扩展,用于帮助创建自动化控制台脚本。它帮助管理控制台脚本的执行,例如避免在先前的 cron 正在运行时执行。它生成已执行 cron 的历史记录,包括花费的时间,并帮助批量处理脚本。

安装

安装此扩展的首选方式是通过 composer

可以运行以下命令

php composer.phar require --prefer-dist fedemotta/yii2-cronjob "*"

或者在您的 composer.json 文件的 require 部分添加以下内容:

"fedemotta/yii2-cronjob": "*"

此扩展需要一个数据库来管理 cron 作业的执行。运行以下迁移以创建表结构:

yii migrate --migrationPath=@fedemotta/cronjob/migrations

使用方法

扩展安装完成后,您可以在控制台控制器中将其用作辅助工具。

请参阅以下示例

<?php
namespace somenamespace\controllers;

use fedemotta\cronjob\models\CronJob;
use somenamespace\SomeModel;
use yii\console\Controller;

/**
 * SomeContrController controller
 */
class SomeContrController extends Controller {
 
    /**
     * Run SomeModel::some_method for a period of time
     * @param string $from
     * @param string $to
     * @return int exit code
     */
    public function actionInit($from, $to){
        $dates  = CronJob::getDateRange($from, $to);
        $command = CronJob::run($this->id, $this->action->id, 0, CronJob::countDateRange($dates));
        if ($command === false){
            return Controller::EXIT_CODE_ERROR;
        }else{
            foreach ($dates as $date) {
                //this is the function to execute for each day
                SomeModel::some_method((string) $date);
            }
            $command->finish();
            return Controller::EXIT_CODE_NORMAL;
        }
    }
    /**
     * Run SomeModel::some_method for today only as the default action
     * @return int exit code
     */
    public function actionIndex(){
        return $this->actionInit(date("Y-m-d"), date("Y-m-d"));
    }
    /**
     * Run SomeModel::some_method for yesterday
     * @return int exit code
     */
    public function actionYesterday(){
        return $this->actionInit(date("Y-m-d", strtotime("-1 days")), date("Y-m-d", strtotime("-1 days")));
    }
}

运行 SomeModel::some_method 今天的操作

./yii some-contr

昨天的操作

./yii some-contr/yesterday

像这样的自定义日期操作

./yii some-contr/init 2010-10-10 2012-10-10

您还可以添加一个每10分钟运行一次的 cron 作业,使用以下控制器操作

*/10 * * * * /path/to/yii/application/yii some-contr/yesterday >> /var/log/console-app.log 2>&1