Есть проблема с порядком обработки заданий в очереди. Допустим, что я, с интервалом 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. Вопрос, как сохранить очередность выполнения заданий, чтобы задания, которые были добавлены позднее, но имеют меньшее время выполнения, не опережали предыдущие?