Artisanコマンドで作成したバッチをコントローラ等で実行したい。
Queueという手段もありますが、そこまで設定する必要がない場合。
exec('php "'.base_path('artisan').'" command:test --env=production > /dev/null &');
--env=productionは参照しているDB等を設定している。
コマンドから実行する場合はWEBサーバーを通さないのでconfigのenv設定が使用されてしまう。
use Artisan;
Artisan::call('command:test', $argument_map_list);
はバックグラウンド実行にならないのでタイムアウトの可能性
参考
Artisanコマンドへ--env=testingオプションを指定した場合に、.envファイルをオーバーライドします。
プログラムによるコマンド実行