Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.06.2019 21:02:57

задания в планировщике не до конца отрабатывают

Приветствую!

Мне требуется выполнять определенный код раз в секунду, но так как планировщик запускается раз в минуту, воспользовался следующим подходом:

$schedule->call(function () {
    //код
})->everyMinute();

$schedule->call(function () {
    sleep(1);
    //код
})->everyMinute();

$schedule->call(function () {
    sleep(2);
    //код
})->everyMinute();

и т.д. вплоть до 59с

Судя по данным в БД за минуту код отрабатывает лишь 22-23 раза.

Вопрос - связано ли это с временем жизни скрипта или есть какие-то моменты в самом Laravel, которые я не учитываю? Если все же время - как настроить чтобы этот cron отрабатывал, не меняя время жизни других скриптов проекта?

Не в сети

#2 20.07.2019 14:24:51

Re: задания в планировщике не до конца отрабатывают

Запусти скрипт с withoutOverlapping. внутри цикл бесконечный и sleep на секунду

Не в сети

#3 21.07.2019 07:44:46

Re: задания в планировщике не до конца отрабатывают

Такой скрипт будет выполняться в один поток, поэтому хоть цикл, хоть буквально перечислить итерации, результат будет примерно как 60/(время_выполнения_процедуры_в_сек + 1).
Плюс один в скобках дрбавояет ваш sleep.

Может быть не надо всё усложнять, а наоборот, вернуться к постановке задачи и найти альтернативный подход? Что изначально требуется сделать?

Изменено artoodetoo (21.07.2019 07:50:27)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела