2016-09-15 16 views
1

私は、アプリケーションの顧客がさまざまな他のAPIを通じてデータをアプリケーションにインポートするという、ラーベルプロジェクトに取り組んでいます。laravelジョブ用に複数のスレッドを処理する方法は?

私は、インポートする必要のある種類のデータごとにジョブを作成することを考えています。しかし、それは、多くの顧客が待ち行列の労働者によって働かなければならない仕事を引き上げることを意味する。つまり、顧客が特定の種類のデータをインポートしている1つの仕事を輸入する仕事をした場合、同じ種類のデータをインポートするには、最初の顧客の仕事が完了するのを待たなければならず、2番目の顧客の仕事はキューの働きによって働き始めるでしょう。しかし、100人の顧客がお互いに待つことはできません。

したがって、この種の輸入にはどのような解決策がありますか?ジョブをハッシュされたキューに入れ、それらのキューを呼び出す必要がありますか?または、これを処理するより良い方法があります。誰もが、非同期的に顧客がさまざまなAPIからデータをインポートするようなアプリケーションで作業したことがありますか?そして、それを最もうまく処理する方法。

答えて

0

正しい方向を指しています。 Laravelのようなキューワーカーが必要ですが、非同期ドライバを選択する必要があります。ビルドインドライバを使用するか、RabbitMQのような独自のキューサーバーをインストールしてみてください。ここでLaravel 5用RabbitMQのドライバーと素敵なパッケージです:

https://github.com/vladimir-yuldashev/laravel-queue-rabbitmq

この意志はすべての顧客要求が非同期キューに、それぞれに別々のスレッドを取得しますことができます。これらのキューシステムは非常に効率的で、それは非同期PHPの一種だと言えます。 PHPコード内の非同期化を実現するには、Guzzle HTTPパッケージを使用してAsync Request(およびアプリケーションのPHPコード/サーバー側からフルサービス)を提供することができます。

関連する問題