4

我正在通过 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 调用的不同控制器中执行此操作。

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

4

1 回答 1

1

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

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

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

于 2016-05-04T13:17:55.367 回答