2017-05-08 11 views
0

私は特定の売り手のためのすべての製品を取得する外部フィードAPI「Amazon mws」を使用しています。自動と手動の2つの方法でこれらの製品をリフレッシュしたい場合は、たとえば、12時間ごとにこのストアをリフレッシュする自動アプローチがあります。手動によるアプローチでは、手動でリフレッシュリンクをクリックしてさらにこのジョブが完了するまで進行状況バーを表示します。Amazon MWSのLaravelバックグラウンドジョブのベストプラクティス

これで、この2つの方法をどうすれば管理できますか?私は、ジョブ、キュー、およびタスクスケジューリングの間で、BeanstalkdまたはRedisを使用するかどうか、完全に混乱していますか?

私はちょうど私がそれをMWSからわずか1 SKUの在庫情報を得ることができないと考えているおかげで職人:)

答えて

0

自動リフレッシュでは、ユーザーが関与していないタスクスケジューラ(システム間のシステム)を実行できます。これは、タスクのスケジューリングに最適です。

ただし、リフレッシュボタンはジョブになりますが、shouldQueueを実装するかどうかによってジョブをキューに入れるか、キューに入れないかを考慮します。このジョブをバックグラウンドで実行したい場合は、そのジョブを非同期にするようにキューに入れることができます。

次に、ジョブが完了したとき、またはデータベースが更新されたときに起動するイベントを設定し、更新が完了したことを知らせる通知をユーザーにブロードキャストできます。

これをステップバイステップで実行して、職人がこのジョブをコントローラから送信できるようにすることができます。

ビジネスロジックをジョブに書き込み、shouldQueueを実装します。ジョブにはreturn文は必要ありません。次に、artisanコマンドでキューを作成すると、キューテーブルが作成され、envのキュードライバがデータベースに変更されます(データベースキューではかなり長い時間がかかりますので、Beanstalkdを使用する必要はありません。あなたはキューに入れておくべきです:listen!待ち行列を使用するときの注記端末を閉じるまで待ち続けるとリスニングキューを実行する前にリスニングキューを実行する前にリスニングが実行され続けます:

職人モデルが更新されたときにイベントが発生すると、更新されたイベントが発生します。

artisanコマンドで通知を作成し、イベントリスナーでイベント通知を行います。通知する内容をカスタマイズできます。

この通知をブロードキャストする必要があります。プッシャーを使用してアカウントを作成し、イベントをブロードキャストする必要があります。

laravelのドキュメントにはすべての内容が記載されていますが、どこから開始するのかは分かりません。

プッシャーのインストールプッシャーとラーベルエコーでブロードキャストすると、あなたがブロードキャストするイベントで、あなたのウェブルートのチャンネルがチャンネルを作成されます。いくつかの他の設定と設定があります。あなたのフロントエンドで何かをテストするだけ。プライベートチャンネルではなく、ちょっと簡単に設定することができます。

希望します。 @ gustav1105 from laracasts

0

...誰かがそれとこのような状況のためのベストプラクティスのすべてを管理する方法を私に指示したいですApi。似たような要求があったとき、私たちはMWS Reports APIに接続するPHPスクリプトを作成しました。具体的に_GET_MERCHANT_LISTINGS_ALL_DATA_レポートを使用してレポートをダウンロードし、mysqlデータベースに挿入/更新しました。 MWS Reports apiは、レポートを要求し、レポートの処理状況をポーリングするように動作するため、redisまたはメッセージキューイングは使用しませんでした。成功した場合は、レポートとプロセスをデータベースにダウンロードしてください。私たちは30分ごとにこのPHPスクリプトをcronで実行しています。

関連する問題