我正在通过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等)。
或者您可以直接在控制器中进行日志记录。