2015-12-30 84 views
0

我实现了一个通讯功能。Symfony 2:如何处理用户友好的大任务

用户可以选择他想要发送简报的客户列表,客户列表可能会有几千个条目。

用户完成创建列表后,我会从数据库中获取所需的全部信息。现在我想让这个过程尽可能地方便用户。

我想到了以下几点:

  1. 用户完成他的列表,并点击“保存”
  2. 我拿的信息,并返回像“行动正在运行的视图请稍候,这个动作可以采取几分钟“
  3. 我正在将信息从列表中写入我的数据库
  4. 我将用户从”请稍等“视图重定向到另一个视图,他可以再次工作。

我的问题是,我无法弄清楚如何在symfony2中实现这个功能,是否有事件发生的可能性,还是应该在会话中保存列表?

回答

3

您有几个选项。最常见的两个是:

  • AJAX调用与JavaScript
  • 使用队列(如ZeroMQ或RabbitMQ的)

我宁愿排队,因为它更易于管理。在Symfony2中有可用于实现一个排队系统的几个包:

你可以寻找替代品上https://packagist.org

我会实施以下流程:

  1. 渲染形式
  2. 邮政形式
  3. 手柄形式:将信息保存到DB
  4. 手柄形式:发送对应于一个队列
  5. 与flashbag

在后端通知用户:

  1. 启动消费者(CLI)
  2. 从队列
  3. 发送您的通讯
  4. 更新与新状态的数据库和日志

在前端:如果数据库的更新和状态更改

通知用户