0

我在我的控制器调用的 Symfony 3.4 应用程序中有一些命令:我想要实现的是实时获取它们的输出并将其打印在屏幕上。

根据他们的文档,我几乎尝试了有关 Symfony 进程的所有内容,但没有任何效果:我总是得到一个空输出(如果我转储内容,它会给我一个空字符串)。

我的命令:

class TestCommand extends ContainerAwareCommand
{
    /**
     * {@inheritdoc}
     */
    protected function configure()
    {
        $this
            ->setName('say:hello');
    }

    /**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        for ($i = 1; $i <= 5; $i++) {
            $output->writeln(str_pad("$i: Hello Ale", 4096));

            sleep(1);
        }
    }
}

我的控制器:

    /**
     * @Route("/test")
     */
    public function testRoute() {
        $process = new Process(['cd', '/Applications/MAMP/htdocs/MyTestProject/', '&&', 'php bin/console say:hello']);
        $process->start();
        while($process->isRunning()) {
            dump($process->getIncrementalOutput());
        }

        die();
    }

转储的输出:
转储的内容

4

1 回答 1

0

在控制器中尝试使用:

 $process = new Process('php /Applications/MAMP/htdocs/MyTestProject/bin/console say:hello');

 $process->run(function ($type, $buffer) {
    echo $buffer
 });

请参阅获取实时过程输出

于 2019-09-04T17:41:10.460 回答