【问题标题】:Run a command as command line from a symfony function从 symfony 函数将命令作为命令行运行
【发布时间】:2016-07-25 15:16:34
【问题描述】:

如何从 symfony 函数中将命令作为命令行运行?

例如

C:\SymfonyProject> php app/console my-command --option=my-option

我想从一个函数运行这个命令。该命令从数据库中导出文件,并将这些文件放在 Symfony 项目的 app/Resource/translations 文件夹中。

public function exportFiles(){ // I want to run command here. }

谢谢! :)

【问题讨论】:

标签: php symfony


【解决方案1】:

您可以为此使用Symfony Process component。代码看起来像这样:

private function process(OutputInterface $output)
{
    $cmd = 'php app/console my-command --option=my-option';

    $process = new Process($cmd);
    $process->setTimeout(60);

    $process->run(
        function ($type, $buffer) use ($output) {
            $output->write((Process::ERR === $type) ? 'ERR:' . $buffer : $buffer);
        }
);

【讨论】:

  • $output 是在哪里定义的?可以是一个简单的文件吗?
  • 啊,复制粘贴时错过了。 $output 在这种情况下是一个 OutputInterface(在另一个 Symfony 命令中运行此代码)。但显然,在这种情况下,您可以只登录到文件或任何您想做的事情。
  • "Could not open input file: app/console" 这个错误出现在$output file 路径问题?
  • 完成:$cmd = 'php ../app/my-command --option=my-option';路径问题 :D 非常感谢!
猜你喜欢
  • 2018-05-06
  • 2011-04-28
  • 2015-06-26
  • 2021-10-22
  • 2018-01-30
  • 2013-04-11
  • 2014-11-27
  • 2017-05-27
相关资源
最近更新 更多