代码之家  ›  专栏  ›  技术社区  ›  FortuneSoldier

如何在symfony应用程序中像后台任务一样运行命令?

  •  1
  • FortuneSoldier  · 技术社区  · 6 年前

    我必须为我创建的控制台命令设置一个作业管理器。 控制台命令需要20到30分钟才能完成。 这个控制台命令正在向数据库中写入多个查询,我们假设它不能缩短到更短的时间。

    我都是在symfon2.8中创建的,但我是一个使用它的新手。 所以我 enter link description here

    我只需要像后台任务一样运行这个命令。不接触应用程序的前端。有人能帮我吗?

    啊,好吧。这需要定期进行,但应用户/客户的请求。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Alister Bulman    6 年前

    这在很大程度上取决于它需要做什么。

    只跑一次?登录到服务器上,使用tmux或screen来保持某些东西的运行,即使您断开了连接,然后运行该命令( bin/console name-of-command )

    定期运行-为需要运行它的用户在crontab中输入一个条目。

    如果不知道脚本需要做什么,以及执行的频率(如果有的话),很难说出nexts步骤可能是什么。

        2
  •  1
  •   Yarimadam    6 年前

    你需要 The Process Component .

    您可以通过以下方式在后台运行PHP:

    $builder = new ProcessBuilder();
    $builder->setPrefix('/usr/bin/php'); // put your php executable here
    $cmd = $builder->setArguments(['/full/path/to/php/file/you/want/to/run.php', 'argumentOne', 'argumentTwo'])
          ->getProcess()
          ->getCommandLine();
    
    $process = new Process($cmd . '  > /dev/null 2>&1 &'); // async trick here
    $process->run();