加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在后台运行自定义Symfony2命令

发布时间:2020-12-13 13:36:15 所属栏目:PHP教程 来源:网络整理
导读:Symfony2使开发人员能够创建自己的命令行命令.它们可以从命令行执行,也可以从控制器执行.根据Symfony2官方文档,可以这样做: protected function execute(InputInterface $input,OutputInterface $output){ $command = $this-getApplication()-find('demo:gr
Symfony2使开发人员能够创建自己的命令行命令.它们可以从命令行执行,也可以从控制器执行.根据Symfony2官方文档,可以这样做:
protected function execute(InputInterface $input,OutputInterface $output)
{
    $command = $this->getApplication()->find('demo:greet');

    $arguments = array(
        ...
    );

    $input = new ArrayInput($arguments);
    $returnCode = $command->run($input,$output);

}

但在这种情况下,我们等待命令完成它的执行并返回返回码.

我怎样才能从控制器执行命令将其分配到后台而无需等待它完成执行?

换句话说,相当于什么

$nohup php app/console demo:greet &
根据文档,我认为没有这样的选择: http://api.symfony.com/2.1/Symfony/Component/Console/Application.html

但是关于你想要实现的目标,我认为你应该使用流程组件:

use SymfonyComponentProcessProcess;

$process = new Process('ls -lsa');
$process->run(function ($type,$buffer) {
    if ('err' === $type) {
        echo 'ERR > '.$buffer;
    } else {
        echo 'OUT > '.$buffer;
    }
});

正如文档中所提到的“如果您希望能够实时获得一些反馈,只需将匿名函数传递给run()方法”.

http://symfony.com/doc/master/components/process.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读