laravel 命令行Command使用

目录: app/Console/Commands/*

1,原始使用方法


# 进入项目目录:
cd /home/www/lv_dapi_tingjunapp
# 查看所有命令:
php artisan list
# 执行某一命令
php artisan command:name --option=foo

# 新增命令
php artisan make:command Init/TestInitCommand --command="init:test"
# 在 Console/Commands/ 目录下 编辑刚才生成的 Init/TestInitCommand 文件
# handle 方法写具体逻辑
# 尽可能的记录 command 日志
$data = array_merge($this->arguments(), $this->getOptions());
Log::channel('command')
    ->info( "[COMMAND-HDL] " . __CLASS__ . " : " . json_encode($data));

# 在代码中 service 或其他地方 调用 artisan 命令使用如下:
// 同步执行,会等待结果返回
Artisan::call('command:name', ['--option' => 'foo']);
// 异步执行,使用队列,无需等待结果返回
Artisan::queue('command:name', ['--option' => 'foo']);

# 在命令行直接执行刚才新增的命令
php artisan init:test

2,封装后使用方法

其他不变,需要统一继承 BaseCommand

特性:

  • 自动记录日志,无需手动记录日志了;
  • 在Controller目录下的,命令统一带上 controller: 前缀;
  • 类名后缀统一定为 Command;
  • 逻辑处理方法统一为 handler (原handle),若有多个action 方法则不写handler;
  • 派发方式与 job , event 一样了(默认使用queue,也可加第二个参数设为 sync)。

注意:需要传 action 和 json 节点,对应command里具体的方法和参数。

也可以通过 App\Common\Libs\Dispatch\Console 调用(推荐):

/**
 * 异步执行命令行保存文件记录
 * @param $data
 * @return bool
 */
private function saveLibraryFile($data)
{
    Console::getInstance(LibraryFileCommand::class)
		->push($data, GlobalConsoleConst::LIB_FILE_CREATE);
    return true;
}

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪@笨笨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值