Laravel - Каково использование настройки времени расписания, когда оно, наконец, использует задание cron ОС?

Документы Laravel:

          • cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

This Cron will call the Laravel command scheduler every minute. When the schedule:run command is executed, Laravel will evaluate your scheduled tasks and runs the tasks that are due.

Я запускаю эти коды ниже в app\Console\Kernel.php:

$schedule->job(new \App\Jobs\done)->everyMinute();
$schedule->command('done:done')->everyMinute();

но ни один из них не работал! поэтому я запускаю команду php artisan schedule:run, но она запускается только один раз, и каждый раз, когда я хочу, чтобы она запускала задание / команду, я должен запустить эту команду, поэтому я попытался использовать приведенную выше команду в документации Laravel. Однако опять же не каждую минуту. Итак, я попытался создать задачу в Task Scheduler и запускать ее каждые 5 минут (потому что у нее было не меньше 5), теперь она работает, но использование ->everyMinute() избыточно, потому что расписание Laravel выполняется только, но основная работа, которая выполняется является планировщиком задач Windows. Итак, как я могу это исправить, чтобы не использовать задание cron или планировщик задач Windows?

Спасибо

Вы должны иметь возможность устанавливать каждые минуты в Планировщике задач Windows: somoit.net/windows/scheduled-task-every-minute

Clément Baconnier 19.11.2018 08:56

Это не проблема, это нормально, если это выполняется каждые 5 минут, но проблема в том, почему мы должны использовать расписание Laravel, когда все действия могут выполняться с помощью задания cron или планировщика Windows? Почему расписание Laravel не запускается каждую минуту или, по крайней мере, позволяет своей задаче выполнять cron? он просто запускает команду, которая находится внутри расписания, что можно сделать с чем-нибудь еще в Laravel?

kodfire 19.11.2018 09:00

Насколько я понимаю, это в основном для того, чтобы упростить всю автоматизацию. Представим, что вам нужно выполнять задачу каждые 15 числа месяца, это будет сложно с одним cron. Может быть, у вас получится с Планировщиком задач Windows. Но вам нужно будет настроить каждую платформу, на которой вы развертываете веб-сайт. Легче установить один cron каждую минуту, а Laravel сделает все остальное

Clément Baconnier 19.11.2018 09:08

Но вы также можете использовать php artisan done:done в своем расписании задач Windows и вообще не использовать ядро.

Clément Baconnier 19.11.2018 09:10

Как я уже сказал, проблема в том, что расписание не запускается каждую минуту. Он просто запускается каждый раз, когда я запускаю команду php artisan schedule:run.

kodfire 19.11.2018 09:11

Laravel знает, что cron не может выполняться чаще, чем каждую минуту. Таким образом, он не отслеживает задание, установленное на everyMinute(). В конце концов, каждый раз, когда вы запускаете команду php artisan schedule:run, он запускает задание.

Clément Baconnier 19.11.2018 09:13

Теперь, как я могу заставить его запускать задание каждую минуту в Laravel?

kodfire 19.11.2018 09:19
$schedule->job(new \App\Jobs\done)->everyMinute(); и запускать планировщик задач Windows с php artisan schedule:run каждую минуту
Clément Baconnier 19.11.2018 09:20

Позвольте нам продолжить обсуждение в чате.

kodfire 19.11.2018 09:22

Да благословит Бог @cbaconnier

Polaris 19.11.2018 09:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
1 143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто чтобы вы могли закрыть вопрос.

Как я уже сказал в комментариях / чате

  • Вы должны иметь возможность устанавливать каждые минуты в Планировщике задач Windows: http://somoit.net/windows/scheduled-task-every-minute
  • Вы также можете использовать php artisan done:done в своем расписании задач Windows и вообще не использовать ядро ​​Laravel.
  • Тот факт, что everyMinute() игнорируется при запуске задания вручную, связан с тем, что Laravel знает, что cron не может выполняться чаще одного раза в минуту. Таким образом, он не отслеживает задание, установленное на everyMinute(). Это означает, что каждый раз, когда вы запускаете команду php artisan schedule:run, она запускает задание.

И в чате упоминается @kyslik: Планировщик хорошо освещен в официальной документации: https://laravel.com/docs/5.7/scheduling#introduction

Другие вопросы по теме