這更多的是一個架構問題。如何在Laravel中實現對長時間運行的導入的跟蹤
我正要編寫一堆Import實現。他們都希望有一些參數(即CSV文件),然後在一段時間內安靜地繼續。在我之前的項目中,我曾使用「shell_exec()」命令在後臺發送這些導入,並在瀏覽器中監視日誌文件以報告狀態。我現在最大的希望是,拉拉維爾接手這裏精簡所有這些體力勞動。
現在,我的問題是關於背後的建議類架構。
我的一堆進口需求是:
- 每個導入需要作爲後臺進程運行在瀏覽器中(和日誌文件)
- 開始進口
- 監測進展情況控制檯和通過HTTP
現在我打算使用「Job」在L5.1中實現基本導入。我正在努力的是在瀏覽器中實現某種「進度條」和監視(最近的)「日誌消息」。我不需要通過套接字進行真正的「實時」視圖,但應該可以定期更新正在運行的導入的進度視圖。
- 有沒有人提示,如何實現這個進度的東西?
我迄今爲止的做法: 閱讀CSV文件,把每行一個隊列元素和監控隊列。日誌消息可能會觸發填充最近日誌消息堆棧的事件。 (我可能會遇到競爭條件,因爲有些行可能依賴於其他行的上一個處理)
是的,應該這樣做。有了我的問題,我也很喜歡Laravel帶來的那些東西,或者在這裏推薦什麼樣的設計模式。 – patriziotomato
@ redless81我不確定你應該這樣看待事情;)總是選擇最簡單的解決方案。模式是爲了使複雜的事情更簡單。我不喜歡5.1中的Laravel Jobs。它們對我來說似乎是假的。 –
我同意並且不同意;)我需要導入大約50 MB的CSV數據以將其分佈到多個表格中。導入過程可能需要幾個小時。我認爲我需要考慮諸如可伸縮性等方面。另外,我也希望充分利用框架提供的架構,因爲它爲其他開發人員帶來了某種標準,使其更易於測試。不過,我同意你應該防止使用模式,如果你不需要它們。 – patriziotomato