如何从各种控制器访问进程对象


How to access process object from various controllers

我正在通过Symfony process组件启动一个简单的流程。

/**
 * @Route("/start_process", name="startProcess")
 */
public function startProcessAction(Request $siteName) {
    $process = new Process('"C:'Program Files (x86)'GnuWin32'bin'wget.exe" --no-parent -U Mozilla -r http://google.de/');
    $process->start();
    return new Response("Process STARTED");
}

这部分工作正常。然而,由于这个过程有时需要更长的时间才能完成,我想检查一下它的进度和输出。这个过程是异步启动的,所以我认为我应该能够在通过ajax调用的另一个控制器中实现这一点。

我不知道如何从另一个控制器访问进程对象。

实现流程日志系统,这样您不仅可以检查当前正在运行的流程,还可以检查它花费了多少时间,一天运行了多少进程,等等。您甚至可以收集每个站点的平均流程持续时间等的统计信息。

只需创建自己的Process类,该类将扩展symfony one,并覆盖process()方法,使其先将新记录插入日志,然后调用父级的process()方法。然后在控制器中,确保返回唯一的进程ID,该ID将用于通过ajax调用检查其状态(in_process、finished、timeout等)。

或者您可以直接在控制器中进行日志记录。