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

我正在通过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并重写process()方法,使其首先将新记录插入日志,然后调用parent的process()方法.然后在控制器中确保返回唯一的进程ID,该进程ID将用于通过ajax调用检查其状态(in_process,finished,timeout等).

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

点赞