Короче говоря, xdebug не будет надежно останавливаться на точках останова в моих файлах cron при использовании:
php bin/magento cron:run
Xdebug настроен правильно, и иногда он будет работать, но в 85% случаев он не будет работать и просто зависнет в CLI, пока я не отключу прослушивание соединений в phpstorm.
Есть ли способ как-то запустить только один файл cron? Мне пришлось скопировать и вставить содержимое моего файла cron в отдельную консольную команду, чтобы проверить его в xdebug, что не идеально.
В Magento 1.x я использовал планировщик AOE для тестирования заданий cron с помощью Xdebug, зайдя к администратору, установив флажок, который мне нужен, и выбрав run из выпадающего списка, и он работал нормально.
Я ищу использовать что-то вроде:
php bin/magento modulename:cronjob
который должен всегда запускать cron, даже если это не запланировано.
require '../app/bootstrap.php';
также в TestApp.php должен быть:return $this->_response;
или он выдаст ошибку, которая у вас есть на скриншоте phpstorm, но не фактический код. Я постараюсь изменить ваш ответ с этим.По возможности сэкономить во время разработки можно было бы использовать N98MageRun для Magento 2.
Это имеет прекрасные команды
sys:cron:list
иsys:cron:run
.Используя эти команды, вы сможете найти конкретный код задания для вашего cron, а затем запустить только этот cron из командной строки.
Его можно легко установить с помощью,
composer require-dev n98/magerun2
и я бы порекомендовал сделать это при установке dev при работе с Magento 2источник
Вы можете добиться с помощью двух файлов:
создать папку и класс в корне проекта, как:
crons / CronprocessApp.php
Создайте другой файл класса:
crons / Cronprocess.php
Для запуска cron перейдите в cli с корневым путем проекта и выполните команду ниже:
источник
Как предотвратить блокировку Xdebug при запуске
bin/magento cron:run
источник