我通过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调用它。
我不知道如何从另一个控制器访问进程对象。
答案 0 :(得分:1)
实施流程日志记录系统,这样您不仅可以检查当前正在运行的流程,还可以检查花费的时间,某天运行的流程数等等。您甚至可以收集有关平均流程持续时间的统计信息每个网站以及更多。
只需创建自己的 <asp:RegularExpressionValidator ID="RegularExpressionValidatorNumeric" runat="server" ControlToValidate="yourControl ID" ErrorMessage="Registraion ID Should be a Numeric" ValidationExpression="^\d+$" ></asp:RegularExpressionValidator>
类,它将扩展symfony并重写if(!title.trim().matches("\s{2,}"))
方法,使其先将新记录插入日志,然后调用父{h}方法。然后在控制器中确保返回唯一的进程ID,该进程ID将用于通过ajax调用检查其状态(in_process,finished,timeout等)。
或者您可以直接在控制器中进行记录。