Вызываю очередь
Route::get('/', function () {
$test = Test::find(1);
App\Jobs\ChangeTestNumber::dispatch()->delay(15);
});
Очередь добавляется в таблицу и выполняется метод handle()
public function handle()
{
$test = Test::find(1);
$test->number = rand(1,540);
$test->save();
}
В handle пытаюсь опять вызвать эту же очередь так:
public function handle()
{
$test = Test::find(1);
$test->number = rand(1,1000);
$test->save();
self::dispatch()->delay(20);
}
Но вторая и последующие очереди не добавляются в jobs, только первая.
Делаю тестовое задание(уже неактуальное, делаю для себя). Вопрос такой:
Добавим новое поле пользователю user - experience
Нужно создать функцию, в которой:
Будет извлекаться пользователь и сохраняться в переменную $user = User::find(1)
Дальше функция выводит experience
Параллельно с работой функции
Асинхронный метод меняет опыт на случайное число каждые несколько секунд
В первой функции ещё раз выводится спустя промежуток времени опыт пользователя.
Каким будет этот вывод ?
Подскажите как еще можно сделать выполнение какого-то метода каждые N секунд используя очереди? Или не используя их. Cronjob'ы выполняются раз в минуту, можно конечно как-то заморочиться со sleep'ами, но может есть вариант получше?