Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Приветствую!
Мне требуется выполнять определенный код раз в секунду, но так как планировщик запускается раз в минуту, воспользовался следующим подходом:
$schedule->call(function () {
//код
})->everyMinute();
$schedule->call(function () {
sleep(1);
//код
})->everyMinute();
$schedule->call(function () {
sleep(2);
//код
})->everyMinute();
и т.д. вплоть до 59с
Судя по данным в БД за минуту код отрабатывает лишь 22-23 раза.
Вопрос - связано ли это с временем жизни скрипта или есть какие-то моменты в самом Laravel, которые я не учитываю? Если все же время - как настроить чтобы этот cron отрабатывал, не меняя время жизни других скриптов проекта?
Не в сети
Запусти скрипт с withoutOverlapping. внутри цикл бесконечный и sleep на секунду
Не в сети
Такой скрипт будет выполняться в один поток, поэтому хоть цикл, хоть буквально перечислить итерации, результат будет примерно как 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.
Не в сети
Страницы 1