@kategg

Как сохранить очередность выполнения заданий в очереди?

Есть проблема с порядком обработки заданий в очереди. Допустим, что я, с интервалом 2-3 секунды, занесла в очередь 3 задания.
Первое задание выполняется 30 секунд и записывает в лог цифру 1
public function handle()
    {
        sleep(30);
        file_put_contents(storage_path('/logs/journal.log'), 1, FILE_APPEND);
    }

второе - выполняется 20 секунд и записывает цифру 2
public function handle()
    {
        sleep(10);
        file_put_contents(storage_path('/logs/journal.log'), 2, FILE_APPEND);
    }

третье - выполняется 2 секунды и записывает цифру 3
public function handle()
    {
        sleep(2);
        file_put_contents(storage_path('/logs/journal.log'), 3, FILE_APPEND);
    }


В итоге, если запустить несколько воркеров, то в журнале я увижу запись - 321, а надо получить 123. Вопрос, как сохранить очередность выполнения заданий, чтобы задания, которые были добавлены позднее, но имеют меньшее время выполнения, не опережали предыдущие?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
Надо начать читать документацию и не изобретать велосипедов с БД и прочим.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы