Документы 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?
Спасибо
Это не проблема, это нормально, если это выполняется каждые 5 минут, но проблема в том, почему мы должны использовать расписание Laravel, когда все действия могут выполняться с помощью задания cron или планировщика Windows? Почему расписание Laravel не запускается каждую минуту или, по крайней мере, позволяет своей задаче выполнять cron? он просто запускает команду, которая находится внутри расписания, что можно сделать с чем-нибудь еще в Laravel?
Насколько я понимаю, это в основном для того, чтобы упростить всю автоматизацию. Представим, что вам нужно выполнять задачу каждые 15 числа месяца, это будет сложно с одним cron. Может быть, у вас получится с Планировщиком задач Windows. Но вам нужно будет настроить каждую платформу, на которой вы развертываете веб-сайт. Легче установить один cron каждую минуту, а Laravel сделает все остальное
Но вы также можете использовать php artisan done:done в своем расписании задач Windows и вообще не использовать ядро.
Как я уже сказал, проблема в том, что расписание не запускается каждую минуту. Он просто запускается каждый раз, когда я запускаю команду php artisan schedule:run.
Laravel знает, что cron не может выполняться чаще, чем каждую минуту. Таким образом, он не отслеживает задание, установленное на everyMinute(). В конце концов, каждый раз, когда вы запускаете команду php artisan schedule:run, он запускает задание.
Теперь, как я могу заставить его запускать задание каждую минуту в Laravel?
$schedule->job(new \App\Jobs\done)->everyMinute(); и запускать планировщик задач Windows с php artisan schedule:run каждую минуту
Позвольте нам продолжить обсуждение в чате.
Да благословит Бог @cbaconnier






Просто чтобы вы могли закрыть вопрос.
Как я уже сказал в комментариях / чате
php artisan done:done в своем расписании задач Windows и вообще не использовать ядро Laravel.everyMinute() игнорируется при запуске задания вручную, связан с тем, что Laravel знает, что cron не может выполняться чаще одного раза в минуту. Таким образом, он не отслеживает задание, установленное на everyMinute(). Это означает, что каждый раз, когда вы запускаете команду php artisan schedule:run, она запускает задание.И в чате упоминается @kyslik: Планировщик хорошо освещен в официальной документации: https://laravel.com/docs/5.7/scheduling#introduction
Вы должны иметь возможность устанавливать каждые минуты в Планировщике задач Windows: somoit.net/windows/scheduled-task-every-minute