2017-09-05 262 views
0

我需要添加功能,允許用戶上載.csv文件(+ - 300行數據),然後處理文件......的步驟是:隊列和活動的工作? CSV文件導入和處理

  1. 用戶上傳.csv文件
  2. .csv文件被保存到S3
  3. .csv文件的每一行驗證,並導入到一個數據庫表(+ - 300行)
  4. 單個PDF報告生成並保存到S3(導入數據庫的每行數據一個),即。 + - 300 PDF報告生成並保存到S3。
  5. 將所有PDF文件壓縮到一個文件中並保存到S3
  6. 當作業完成時(可以下載zip),用戶會收到通知。 在你的經驗,這將是實現這一目標,如果使用第三方服務是出了問題(比AWS提供的除外)的

我傾向於...之後的最有效方式。 csv文件上傳並保存到S3,排隊所有其他任務,並在作業完成後向用戶發送電子郵件?我如何處理所有這些。用戶可以上傳csv文件並啓動該過程,並在作業完成時注意。

非常感謝。

謝謝。

+0

似乎高工作任務在這裏高起來。你收取了費用,並希望免費完成。至少你應該嘗試,然後與代碼部分,如果不工作。它太廣泛了。 – C2486

+0

@ user2486,我在問最好的方法來做到這一點。無論如何,我都不會要求編碼。 – Harshitha

+0

你基本上回答你自己的問題。特別是在Laravel Horizo​​n可用的情況下,工作隊列是最好的選擇。您可以通過電子郵件/ slack和這樣的/網絡套接字(Laravel Echo)通知客戶... – peterm

回答

1

AWS對這種情況有很好的工具。首先,您應該在AWS Lambda中使用S3存儲桶觸發器。它會在文件上傳時運行代碼。從那裏你可以做所有的工作,或者使用SQS或其他消息傳遞解決方案來消息並行處理。如果需要,可以使用單獨的過程將這些任務中的每個任務捆綁到一個zip文件中,並且可以使用SNS或SES發送電子郵件,短信或推送通知。

AWS SWF和StepFunctions都可用於編排所有步驟和工作流程。