如何从各种控制器访问进程对象
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
class 即可扩展 symfony 并覆盖 process()
方法,使其首先将新记录插入日志,然后调用父级的 process()
方法。然后在控制器中确保 return 唯一进程 ID,它将用于通过 ajax 调用检查其状态(in_process、完成、超时等)。
或者您可以直接在控制器中进行日志记录。
我正在通过 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
class 即可扩展 symfony 并覆盖 process()
方法,使其首先将新记录插入日志,然后调用父级的 process()
方法。然后在控制器中确保 return 唯一进程 ID,它将用于通过 ajax 调用检查其状态(in_process、完成、超时等)。
或者您可以直接在控制器中进行日志记录。