Как и в теории, вы не находитесь в терминале, когда выполняете свое задание (задание может быть, например, поставлено в очередь или запланировано), выход не сохраняется при запуске вне терминала.
Однако вы можетепо-прежнему получить выходной буфер с Artisan :: output ();
Пример:
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Artisan;
class MyJob implements ShouldQueue
{
public function __construct()
{
}
public function handle()
{
Artisan::call('mycommand:doit');
$output = Artisan::output(); // $output is a string
// Do whatever you want with $output
}
}
Обновление: синхронный вывод
Вы можете попробовать это: Пример команды:
class SlowCommand extends Command
{
protected $signature = "slow";
public function handle()
{
$max = 10;
for ($i = 0; $i < $max; $i++) {
$this->line($i);
sleep(1);
}
}
}
// Synchronous output
Artisan::call("slow");
echo Artisan::output();
// Asynchronous output
$buffer = new ConsoleOutput();
Artisan::call("slow", [], $buffer);