3

背景

  1. 因大量的kernel立commands注册和调度配置信息,不同时段的多人员开发,造成git冲突
  2. 注册和调度信息过多,造成维护困难

安装

composer require qklin/laravel-kernel-plus

config/app.php

'providers' => [
    ...
    Qklin\Kernel\Plus\KernelPlusProvider::class,
]

说明

# 会加载注册所有的comand命令脚本,并自动加入schedule队列, 无需手动个添加
php artisan schedule:run

# 自动注册command,并执行
php artisan c:cmd:core:test

注解说明

command::handle()

// * @command true                         //注册command
// * @commandParams param1=foo&--option=1  //本参数可省略
// * @schedule true                        //加入schedule 
// * @runTime everyMinute                  //无参数的所有方法都支持
// * @runTime cron|* * * * *               // 目前只支持cron带参数,方法和参数[|]分隔
// * @withoutOverlapping true
// * @runInBackground true
// * @appendOutputTo test/log              //记录日志,位置:storage目录
// * @deprecated

env

默认的env配置

KERNEL_PLUS_ORIGIN_PREFIX=c
KERNEL_PLUS_MODULE_PREFIX=cm
KERNEL_PLUS_MODULE_DIR=Biz
KERNEL_PLUS_COMMANDS_DIR=cmd
KERNEL_DOCMENT_CMD=command
KERNEL_DOCMENT_CMD_PARAM=commandParams
KERNEL_DOCMENT_SCHEDULE=schedule
KERNEL_DOCMENT_RUN_TIME=runTime
KERNEL_DOCMENT_RUN)BACKGROUND=runInBackground
KERNEL_DOCMENT_LOG=appendOutputTo
KERNEL_DOCMENT_OVER_LAPPING=withoutOverlapping
KERNEL_DOCMENT_DEPRACATED=deprecated

demo

<?php

namespace App\Console\Commands\Core;

use App\Console\BaseCommand;

class Test extends BaseCommand
{
    // 依赖关系
    // 自动解决依赖,适用于单脚本依赖,不适用http
    const DEPENDS = [
        Testdepend::class
    ];

    // 脚本命令注册名
    const COMMAND_SIGN = 'c:cmd:core:test';

    protected $signature = self::COMMAND_SIGN . ' {param1?}';
    protected $description = '自动注入脚本测试';

    /**
     * @command            true
     * @schedule           true
     * @runTime            everyMinute
     * @runTime            cron|* 1 * * *
     * @withoutOverlapping true
     * @runInBackground    true
     * @appendOutputTo     logs/c_core_test 
     */
    public function handle()
    {
        $this->info("test finish");
    }
}

Object
2.8k 声望235 粉丝

域名代售,需要私信