php - 在symfony中执行长时间后台进程

标签 php symfony

我花了很长时间阅读如何解决我的问题,但找不到解决方案。

我正在使用 symfony,当用户调用某个操作时,我需要执行很长时间的流程。请求完成后我可以处理数据吗?目的是使用 jQuery 从客户端启动轮询过程,并等待该过程完成以重定向到另一个操作。

现在,我使用 ContainerAwareCommand 执行此操作,但它会等到后台进程完成。

请问你能帮我吗?

提前致谢。

最佳答案

是的,在将响应发送给用户后,可以在 Symfony 中执行一些后台处理。

您需要为 kernel.terminate 编写一个监听器事件。 并在回调中定义长时间运行的流程。

请注意以下几点:

  • 如果响应以编码的 gzip 格式发送,则此技术不起作用。因此,您应该强制 apache/nginx 不使用 gzip 来响应此特定响应。
  • 在此请求期间设置任何 session 数据都非常复杂,因为只有在长时间运行的进程完成后才会设置 session 。这意味着,您需要找到 Flashbag 消息的替代方案。

关于php - 在symfony中执行长时间后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106059/

相关文章:

php - 函数中的 symfony 重定向

php - innodb中的并发

php - 提交表单两次或刷新两次

php - Doctrine :与属性或位置的多对多关系

php - 使用 DataTransformer 将实体中的 Symfony2 base64 以表单形式(和反向)文件

php - Symfony2 缓存问题

php - Javascript 字符串长度与 PHP mb_strlen 不同

php - 如何在今天内打字 From 00 :00:00 to 23:59:59 in Laravel

PHP:在运行前检测到 "undefined function"类型的错误?

javascript - symfony2 + Assets : how to restrict a css to a print when using {% javascripts %}