我怎么能 运行 像 Symfony 应用程序中的后台任务一样的命令?

How could I run a command in like an background task in Symfony application?

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

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

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

啊,好的。这需要定期完成,但需要 user/clients 请求。

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

只是运行一次而已?登录到服务器,使用 tmux 或 screen 保留一些东西 运行ning,即使你断开连接,然后 运行 命令 (bin/console name-of-command).

运行 定期 - 为需要 运行 的用户在 crontab 中添加一个条目。

在不知道脚本需要做什么以及执行频率(如果有的话)的情况下,很难说接下来的步骤是什么。

你需要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();