Как разобраться с кейсом: open Server планировщик задать cron.bat?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: мне нужно настроить cron, но у меня он работает через консоль. В консоле вот этот код:

#!/usr/bin/env php <?php require __DIR__.'/../vendor/autoload.php'; require_once __DIR__."/../config.php"; //use src\core\Database; use Symfony\Component\Console\Application; $application = new Application(); $application->add(new \command\CronCommand()); $application->add(new \command\PaymentCommand()); $application->add(new \command\ServicesCommand()); $application->add(new \command\YooKassaCommand()); $application->add(new \command\QueueMailCommand()); $application->run();

Я так понимаю нужно делать bot файл, чтобы cron его запускал?

697bc7c9c7027244487835.png

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
WordPress-редакция Ответ

Для Open Server планировщик действительно удобнее запускать через .bat, который вызывает нужный PHP и ваш консольный скрипт. Сам PHP-файл с shebang #!/usr/bin/env php в Windows напрямую планировщиком обычно не запускается так, как в Linux, поэтому нужен явный путь к интерпретатору.

Пример cron.bat:

@echo off
cd /d D:OSPanelhomesite.localpublic
D:OSPanelmodulesPHP-8.3php.exe binconsole cron

@echo off cd /d D:OSPanelhomesite.localpublic D:OSPanelmodulesPHP-8.3php.exe binconsole cron

Если ваш файл называется, например, console и лежит в папке bin, путь должен совпадать с реальным. Важны две вещи: cd /d в корень проекта и запуск именно тем PHP, под которым у вас стоят расширения и зависимости.

Если консольный скрипт сам регистрирует команды Symfony, то команда может выглядеть так:

@echo off
cd /d D:OSPanelhomeproject.localpublic
D:OSPanelmodulesPHP-8.3php.exe console CronCommand

@echo off cd /d D:OSPanelhomeproject.localpublic D:OSPanelmodulesPHP-8.3php.exe console CronCommand

Точное имя зависит от того, как команда названа внутри класса. Проверьте список команд:

D:OSPanelmodulesPHP-8.3php.exe console list

D:OSPanelmodulesPHP-8.3php.exe console list

Для отладки добавьте логирование вывода:

@echo off
cd /d D:OSPanelhomeproject.localpublic
D:OSPanelmodulesPHP-8.3php.exe console cron &gt;&gt; D:OSPanellogscron-project.log 2&gt;&amp;1

@echo off cd /d D:OSPanelhomeproject.localpublic D:OSPanelmodulesPHP-8.3php.exe console cron &gt;&gt; D:OSPanellogscron-project.log 2&gt;&amp;1

В планировщике Open Server или Windows Task Scheduler указывайте запуск этого bat-файла. Если используете Windows Task Scheduler, задайте “Start in” как папку проекта, либо оставьте cd /d внутри bat.

Итог: да, делайте cron.bat. Не полагайтесь на shebang в Windows. Укажите полный путь к PHP Open Server, перейдите в корень проекта, запускайте Symfony console-команду и пишите вывод в лог, иначе ошибки cron будет трудно отлавливать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно