2016-09-19 4 views
4

Предположим, что мой сервер отправляет идентичный запрос на 5 клиентских устройств в 12:00:05. Я хочу подождать 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

Смежные вопросы