2017-05-08 40 views
0

我正在與外部餵養API「亞馬遜mws」,我得到所有產品的具體賣家。現在讓我說,如果我想通過兩種方法刷新這些產品:自動和手動,自動方法將每隔12小時刷新一次該商店,手動方法是讓賣方手動點擊刷新鏈接,然後進一步顯示進度條,直到完成這項工作。Laravel背景與亞馬遜MWS的最佳實踐

那麼,現在我該如何設法使這兩種方法?我完全混淆了作業,隊列和任務調度,無論是使用beanstalkd還是redis?

我只是希望有人指導我如何管理這一切,最佳實踐對於這種情況...謝謝:)工匠

回答

0

對於自動刷新,您可以運行任務調度程序(系統到系統),用戶不參與,這是調度任務的完美情況。

雖然刷新按鈕是一項工作,但考慮到可以通過執行shouldQueue或不執行任務來排隊或排隊工作。如果您希望在後臺完成這項工作,您可以將該工作排隊以完成異步。

然後設置一個事件,該事件在作業完成時或數據庫更新時觸發,您可以向用戶廣播通知,通知他或她的團隊更新已完成。

所以讓我們一步一步來,你可以使用artisan命令做這個工作,你可以從你的控制器發送這個工作。

寫你的業務邏輯的工作,並實施shouldQueue。作業不需要返回語句。然後使用artisan命令創建隊列,這將創建隊列表,並將env中的隊列驅動程序更改爲數據庫(您可以使用數據庫隊列獲得相當長的一段路,所以您不必使用beanstalkd,這是練習隊列的好方法,你應該排隊:聽!只要一個音符,當你使用隊列聽,聽會繼續運行,直到你關閉終端,然後當打開一個終端,然後再運行監聽隊列:重啓

創建你想與工匠和在您的模型上偵聽事件更新,當更新完成時事件將觸發。

使用artisan命令和事件偵聽器創建通知,事件通知。您可以自定義要通知的通知。

您需要廣播此通知,因此您需要使用推送器創建一個帳戶並廣播該事件。

laravel文檔涵蓋了所有內容,但很難知道從哪裏開始。

要用推送器安裝推送器和laravel回聲進行廣播,然後在您將廣播到您的網絡路徑中的頻道並創建頻道時,還會有一些其他設置和配置,只是提示廣播和接收回到你的前端只是爲了測試。廣播渠道而不是私人渠道只是更容易設置從那裏如果它的工作做任何你想做的事情。

希望它有幫助。來自laracasts的 @ gustav1105

0

我相信這是不可能獲得只是一個SKU從MWS庫存信息API。當我們有類似的要求時,我們剛剛創建了一個php腳本,它連接到MWS Reports api,專門使用_GET_MERCHANT_LISTINGS_ALL_DATA_報告下載報告並插入/更新到mysql數據庫中。我們沒有使用redis或消息隊列,因爲MWS報告api的工作方式是請求報告並輪詢報告處理狀態。當它成功時,將報告和過程下載到數據庫中。我們每30分鐘一直在用cron運行這個php腳本。