2015-12-30 80 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. 更新與新狀態的數據庫和日誌

在前端:如果數據庫的更新和狀態更改

通知用戶