#php #laravel #cron
#php #laravel #cron
Вопрос:
В приложении Laravel у нас есть задача, которая должна выполняться (например) каждый час для одних пользователей, каждые два часа для других пользователей, каждые 4 часа для других пользователей и каждые шесть часов для всех остальных.
Хотя мы могли бы создать четыре разные команды и использовать встроенный планировщик для запуска их через cron через cron с соответствующими интервалами, мне это кажется несколько неуклюжим.
Есть ли более элегантный и краткий способ достижения желаемого результата в одной команде и одном
Единственная мысль, которая у меня была, и я не уверен, насколько это было бы надежно, заключалась бы в том, чтобы запускать задачу каждый час, но затем команда просматривала время ее выполнения при каждом запуске. Таким образом, она автоматически включала бы всех почасовых пользователей в список пользователей, подлежащих обработке каждый раз, но затем, если час равен 0, 2, 4, 6 и т.д., Также включайте двух почасовых пользователей, если это 0, 4, 8, также включайте четырех почасовых пользователей и так далее — опять же, это кажется несколько неэлегантным.
Есть мысли?
Комментарии:
1. Вам просто нужен один Cron, который выполняется каждый час. Создайте дополнительный столбец в своей базе данных и укажите пользователей, которым нужно запускать каждый час, и пользователей, которым нужно запускать каждые два и т.д. Время обновления, которое он запускал в последний раз, и выберите его во время запуска cron (это много времени, но вы поняли суть: P)