2016-09-19 20 views
4

私のサーバが12:00:05に5つのクライアントデバイスに同じ要求を送信したとします。私は90秒(12:01:35まで)待ってから、どのクライアントがリクエストに適切に応答したかチェックして、何か他のことをしたいと思います。このようなことを達成する最良の方法は何ですか?Laravel 5.2でジョブをどのように遅延させるのですか?

ジョブをキューに入れて最初にsleep(90)を使用する必要がありますか?問題は、この種のジョブが完了するまでに少なくとも90秒かかることで、サーバーはデフォルトで60秒後にタイムアウトに設定されます。私はサーバーの設定を変更することができますが、他のジョブは60秒以上経過してもタイムアウトしたと見なされます。

代わりにスケジュールされたタスクをキューに入れる必要がありますか?ここで問題となるのは、Laravelとcronは、最も近い分(12:01または12:02、ただし12:01:35ではなく)に精度をスケジューリングするだけだと思います。

+0

「遅延ディスパッチ」キューにジョブを送信するとどうなりますか? –

答えて

5

Laravelでキューに遅延ディスパッチを使用できます。 https://laravel.com/docs/master/queues#delayed-dispatching

$job = (new YourEvent($coolEvent))->delay(Carbon::now()->addSeconds(90)); 

これは、キューに追加されてから90秒後にタスクを実行します。

+1

ありがとう!それがまさに私が必要としていたものです。どのように私はドキュメントでそれを逃したか分からない。 – jreikes

関連する問題