Хвостовой журнал в пределах Laravel никогда не выполняет Symfony обратный вызов процесса - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь подключить файл журнала, используя консольную команду для обнаружения определенных c ошибок. Однако обратный вызов в части run(...) моего сценария никогда не вызывается в процессе Symfony:

use Illuminate\Console\Command;
use Symfony\Component\Process\Process;

class MonitorLogs extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'monitor:logs {log}';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $command = "tail -n 1 -f " . escapeshellarg($this->argument('log'));

        (new Process($command))
            ->setTty(true)
            ->setTimeout(null)
            ->run(function ($type, $line) {
                $this->info('test');
            });
    }
}

Я пытался отследить с помощью Xdebug любую точку останова на $this->info(), которая никогда не будет достигнута. Я могу добавить строки в файл журнала, с которым я тестирую, и они отображаются в моей консоли во время работы скрипта, но эта строка для вывода слова test никогда не удаляется.

Что здесь не так?

1 Ответ

1 голос
/ 07 января 2020

Пожалуйста, удалите setTty(true) и вывод должен отображаться соответственно

...