【问题标题】:Howto find out if Laravel Command has been started via the scheduler?如何确定 Laravel 命令是否已通过调度程序启动?
【发布时间】:2018-12-01 02:50:39
【问题描述】:

当 laravel 调度器启动如下命令时:

$schedule->command('test:testcommand')->hourly();

我需要在命令内部找出它是否已通过

artisan test:testcommand

artisan schedule:run

我查看了$_SERVER['argv'],但我没有看到任何可以帮助我的信息 确定这一点。
也许 laravel 有一些花哨的内部函数,但我找不到它们。

【问题讨论】:

    标签: laravel command command-line-interface scheduler


    【解决方案1】:

    做到这一点的唯一方法是通过参数进行交流。所以你可以这样做:

    $schedule->command('test:testcommand',['--scheduler'])->hourly();
    

    【讨论】:

      【解决方案2】:

      您可以通过事件来做到这一点:

      php artisan make:event OnCommandRun

      然后在你的testcommand 类的handle() 中触发它:

      event(new OnCommandRun());

      然后在事件handle()函数中做任何你想做的事情

      More on Events

      【讨论】:

      • 我相信无论如何都会调用这个事件,不管命令是直接调用还是由调度程序调用 - 如果只有一种方法会触发它,这个事件就没有意义。那么这个事件应该如何帮助我在这里识别谁调用了这个命令呢?
      • 对不起,我一开始没有注意到目的是测试
      猜你喜欢
      • 2010-09-28
      • 2019-12-28
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多