Krótko mówiąc, xdebug nie zatrzyma się niezawodnie na punktach przerwania w moich plikach cron, gdy używasz typowego:
php bin/magento cron:run
Xdebug jest poprawnie skonfigurowany i czasami zadziała, ale 85% czasu nie zadziała i po prostu zawiesi się w CLI, dopóki nie wyłączę nasłuchiwania połączeń w phpstorm.
Czy istnieje sposób na uruchomienie tylko jednego pliku cron? Musiałem faktycznie skopiować i wkleić zawartość mojego pliku cron do osobnego polecenia konsoli, aby poprawnie przetestować go w xdebug, co nie jest idealne.
W Magento 1.x korzystałem z AOE Scheduler do testowania zadań cron z Xdebug, przechodząc do administratora, zaznaczając to, które chciałem, i wybierając z menu rozwijanego uruchamianie i działało dobrze.
Chcę użyć czegoś takiego:
php bin/magento modulename:cronjob
który powinien zawsze uruchamiać crona, nawet jeśli nie jest to zaplanowane.
require '../app/bootstrap.php';
także na TestApp.php musi być:return $this->_response;
lub spowoduje wyświetlenie błędu, który masz na zrzucie ekranu phpstorm, ale nie rzeczywistego kodu. Spróbuję w ten sposób edytować twoją odpowiedź.Opcją oszczędzania czasu programowania byłoby użycie N98MageRun dla Magento 2.
Ma to wspaniałe polecenia
sys:cron:list
isys:cron:run
.Za pomocą tych poleceń będziesz w stanie znaleźć konkretny kod zadania dla twojego crona, a następnie uruchomić tylko ten cron z linii poleceń.
Można go łatwo zainstalować za pośrednictwem
composer require-dev n98/magerun2
i zalecałbym, aby przejść do instalacji programistów podczas pracy z Magento 2źródło
Możesz to osiągnąć za pomocą dwóch plików:
utwórz folder i klasę w katalogu głównym projektu, np .:
crons / CronprocessApp.php
Utwórz kolejny plik klasy:
crons / Cronprocess.php
Aby uruchomić crona, przejdź do cli ze ścieżką katalogu głównego projektu i uruchom poniższe polecenie:
źródło
Jak zapobiec blokowaniu się Xdebug podczas działania
bin/magento cron:run
źródło