{"id":44,"date":"2021-03-20T05:06:22","date_gmt":"2021-03-20T04:06:22","guid":{"rendered":"https:\/\/sumedia.myddns.me\/sumedia\/sumedia-webdesign\/www.sumedia-webdesign.de\/blog\/?p=44"},"modified":"2024-12-02T07:52:10","modified_gmt":"2024-12-02T06:52:10","slug":"shopware-6-cronjob-debugging-messenger-scheduled-tasks","status":"publish","type":"post","link":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/","title":{"rendered":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Zielsetzung<\/h2>\n\n\n\n<p>Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Problemstellung<\/h2>\n\n\n\n<p>Shopware 6 bricht bei jedem Fehler im Cronjob so ab, dass ein Eintrag in der Datenbank festgeschrieben wird der verhindert, dass der Cronjob erneut ausgef\u00fchrt wird. Im Betrieb m\u00f6chte man das nicht wenn man zum Beispiel Fehler loggen oder Ausnahmen behandeln will ohne, dass gleich der ganze Cronjob ausgesetzt wird. Ein Logging vereinfacht uns das Debugging der Cronjobs und mit Hilfe eines CLI Command k\u00f6nnen wir die Kommandos bequem auf der Console debuggen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f6sungsweg<\/h2>\n\n\n\n<p>Es soll eine abstrakte Klasse f\u00fcr alle Cronjobs angelegt werden, die das betreffende Loggingverhalten f\u00fcr Cronjobs implementiert, Fehler abf\u00e4ngt und speichert. Au\u00dferdem m\u00f6chte ich einen Consolen-Command zur Verf\u00fcgung stellen in dem ich den Cronjobs vereinfacht auf der Console debuggen kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Umsetzung<\/h2>\n\n\n\n<p>Als ich das Erste mal mit den Cronjobs von Shopware 6 zu tun hatte sind mir viele Probleme und merkw\u00fcrdige Fehler aufgetreten.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keine Fehlermeldungen<\/li>\n\n\n\n<li>Bleibt in Status \u201equeue\u201c stecken oder \u201efailed\u201c ohne Hinweis<\/li>\n\n\n\n<li>Debugging mit XDebug teilweise ohne Funktion<\/li>\n<\/ul>\n\n\n\n<p>Nach ein paar Stunden mit dem Cronjob System versteht man dann aber letztendlich den Sinn hinter den Funktionen und Daten die dort durchlaufen.<\/p>\n\n\n\n<p>Der Cronjob kann auf zwei verschiedene Wege getriggert werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00dcber den Administrationsbereich als Asynchroner Request<\/li>\n\n\n\n<li>\u00dcber die Console, respektive \u00fcber einen Cronjob aus dem System<\/li>\n<\/ul>\n\n\n\n<p>Eine Besonderheit hierbei ist, dass man nicht einzelne Cronjobs antriggert sondern einen Prozess startet der die Cronjobs f\u00fcr eine gegebene Zeitspanne abarbeitet.<\/p>\n\n\n\n<p>Den Asynchronen Request \u00fcber das Backend kann deaktivieren in folgender Datei: \/config\/packages\/shopware.yaml<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\nshopware:\n  admin_worker:\n    enable_admin_worker: false\n<\/pre><\/div>\n\n\n<p>Alternativ kann man die Message Queue leeren und den Cronprozess starten mit<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bin\/console messenger:consume --time-limit=360\nbin\/console scheduled-task:run --time-limit=360<\/code><\/pre>\n\n\n\n<p>Hier ist auch schon die <strong>erste Falle<\/strong> versteckt. Denn wenn der Prozess l\u00e4uft, dann werden alle Klassen geladen und bleiben f\u00fcr die 360 Sekunden f\u00fcr den Prozess erhalten. Deshalb <strong>scheint XDebug mit z.B. PHPStorm manchmal einfach nicht zu funktionieren<\/strong> oder <strong>die Anwendung reagiert nicht auf \u00c4nderungen die man macht<\/strong>.<\/p>\n\n\n\n<p>Der Messenger muss Mitlaufen um die Queue abzuarbeiten.<\/p>\n\n\n\n<p>In der Dokumentation steht, dass der Messenger eigentlich auch var_dump ausgeben m\u00fcsste aber bei mir blieb er sogar bei Fehlern v\u00f6llig Stumm. Diese <strong>unerkl\u00e4rlichen Stati-\u00c4nderungen<\/strong> mussten erst mal als Fehler erkannt werden. Denn auch das Steckenbleiben im Status \u201e<strong>queue<\/strong>\u201c sowie \u201e<strong>failed<\/strong>\u201c wei\u00dft auf einen <strong>Fehler im Script<\/strong> hin. Bleibt die Anwendung in \u201e<strong>running<\/strong>\u201c h\u00e4ngen, dann wurde der <strong>Cronjob vermutlich abgebrochen<\/strong>.<\/p>\n\n\n\n<p>Aus diesem Grund habe ich mir eine Abstrakte Klasse f\u00fcr meinen <strong>Cronhandler<\/strong> erstellt, der nicht nur die Fehler loggt, sondern dazu auch noch verhindert, dass ungewollte Stati f\u00fcr den Cronjob gespeichert werden.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php declare(strict_types=1);\n\nnamespace MyNamespace;\n\nuse Psr\\Log\\LoggerInterface;\nuse Shopware\\Core\\Framework\\DataAbstractionLayer\\EntityRepositoryInterface;\nuse Shopware\\Core\\Framework\\MessageQueue\\ScheduledTask\\ScheduledTaskHandler;\n\nabstract class AbstractCronHandler extends ScheduledTaskHandler\n{\n    protected $logger;\n\n    public function __construct(LoggerInterface $logger, EntityRepositoryInterface $scheduledTaskRepository)\n    {\n        parent::__construct($scheduledTaskRepository);\n        $this-&gt;logger = $logger;\n    }\n\n    public function handle($task): void\n    {\n        set_error_handler(&#x5B;$this, &#039;handleError&#039;);\n\n        try {\n            parent::handle($task);\n        } catch(\\Throwable $e) {\n            $this-&gt;logException($e);\n        } finally {\n            restore_error_handler();\n        }\n    }\n\n    public function handleError($code, $message, $file, $line)\n    {\n        $exception = new \\ErrorException($message, $code, E_ERROR, $file, $line);\n        $this-&gt;logException($exception);\n        return true;\n    }\n\n    public function logException(\\Throwable $e): void\n    {\n        $message =\n            $e-&gt;getMessage() . &quot;\\n in &quot; .\n            $e-&gt;getFile() . &quot;\\n line &quot; .\n            $e-&gt;getLine() . &quot;\\n&quot; . $e-&gt;getTraceAsString();\n        $this-&gt;logger-&gt;error($message);\n    }\n}\n\n<\/pre><\/div>\n\n\n<p>Diese Klasse wird von jedem CronHandler vererbt, der dieses Verhalten aufweisen soll. Den Logger kann man \u00fcber die \/Resources\/services.xml konfigurieren:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;?xml version=&quot;1.0&quot; ?&gt;\n\n&lt;container xmlns=&quot;http:\/\/symfony.com\/schema\/dic\/services&quot;\n           xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n           xsi:schemaLocation=&quot;http:\/\/symfony.com\/schema\/dic\/services http:\/\/symfony.com\/schema\/dic\/services\/services-1.0.xsd&quot;&gt;\n&lt;service id=&quot;MyNamespace\\Logger&quot; class=&quot;Monolog\\Logger&quot;&gt;\n            &lt;factory service=&quot;Shopware\\Core\\Framework\\Log\\LoggerFactory&quot; method=&quot;createRotating&quot;\/&gt;\n            &lt;argument type=&quot;string&quot;&gt;myNamespace_cron&lt;\/argument&gt;\n        &lt;\/service&gt;\n\n        &lt;service id=&quot;MyNamespace\\Cron&quot;&gt;\n            &lt;tag name=&quot;shopware.scheduled.task&quot; \/&gt;\n        &lt;\/service&gt;\n\n        &lt;service id=&quot;MyNamespace\\CronHandler&quot;&gt;\n            &lt;argument type=&quot;service&quot; id=&quot;MyNamespace\\Logger&quot; \/&gt;\n            &lt;tag name=&quot;messenger.message_handler&quot; \/&gt;\n        &lt;\/service&gt;\n\n&lt;\/container&gt;\n<\/pre><\/div>\n\n\n<p>Der Cronjob sieht wie folgt aus:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php declare(strict_types=1);\n\nnamespace Sumedia\\Wbo\\Cron;\n\nuse Shopware\\Core\\Framework\\MessageQueue\\ScheduledTask\\ScheduledTask;\n\nclass ExportOrders extends ScheduledTask\n{\n    public static function getTaskName(): string\n    {\n        return &#039;myNamespace.myAction&#039;;\n    }\n\n    public static function getDefaultInterval(): int\n    {\n        return 360;\n    }\n}\n\n<\/pre><\/div>\n\n\n<p>Der Handler mit meiner abstrakten Klasse:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php declare(strict_types=1);\n\nnamespace MyNamesoace;\n\nuse Psr\\Log\\LoggerInterface;\nuse Shopware\\Core\\Framework\\DataAbstractionLayer\\EntityRepositoryInterface;\nuse Symfony\\Component\\DependencyInjection\\Container;\n\nclass CronHandler extends AbstractCronHandler\n{\n    public function __construct(LoggerInterface $logger)\n    {\n        parent::__construct($logger, $scheduledTaskRepository);\n    }\n\n    public static function getHandledMessages(): iterable\n    {\n        return &#x5B; Cron::class ];\n    }\n\n    public function run(): void\n    {\n        \/** do fancy stuff **\/\n    }\n}\n\n<\/pre><\/div>\n\n\n<p>Damit wir aber die Anwendung nicht \u00fcber die Logdateien debuggen m\u00fcssen legen wir uns einen CLI Command an, der uns Fehler direkt auf der Console meldet.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php declare(strict_types=1);\n\nnamespace Sumedia\\Wbo\\Service\\Wbo\\Command\\Cli;\n\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\Console\\Command\\Command;\nuse Symfony\\Component\\Console\\Input\\InputInterface;\nuse Symfony\\Component\\Console\\Output\\OutputInterface;\nuse Symfony\\Component\\DependencyInjection\\ContainerInterface;\n\nclass ExportOrders extends Command\n{\n    protected static $defaultName = &#039;my:export-orders&#039;;\n\n    \/** @var YourInterface *\/\n    protected $command;\n\n    \/\/ $command is any command that implements ::execute()\n    public function __construct(YourInterface $command)\n    {\n        $this-&gt;command = $command;\n        parent::__construct();\n    }\n\n    protected function configure(): void\n    {\n        $this-&gt;setDescription(&#039;Exports orders&#039;);\n    }\n\n    protected function execute(InputInterface $input, OutputInterface $output): int\n    {\n        $this-&gt;command-&gt;execute();\n        \n        return 0;\n    }\n}\n<\/pre><\/div>\n\n\n<p>Nach dem man nun seinen Prozess mit der CLI verbunden hat kann man bequem per Console debuggen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bin\/console my:export-orders<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Zielsetzung Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging &hellip; <\/p>\n","protected":false},"author":2,"featured_media":153,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[13],"tags":[],"class_list":["post-44","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-shopware"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media<\/title>\n<meta name=\"description\" content=\"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media\" \/>\n<meta property=\"og:description\" content=\"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\" \/>\n<meta property=\"og:site_name\" content=\"S.U. Media\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/sumediawebdesignrheinhessen\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-20T04:06:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-02T06:52:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"680\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sven Ullmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SumediaWeb\" \/>\n<meta name=\"twitter:site\" content=\"@SumediaWeb\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sven Ullmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\"},\"author\":{\"name\":\"Sven Ullmann\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/person\/9f1d5cc1dd4dc671a6b4489798b598ae\"},\"headline\":\"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks\",\"datePublished\":\"2021-03-20T04:06:22+00:00\",\"dateModified\":\"2024-12-02T06:52:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\"},\"wordCount\":582,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg\",\"articleSection\":[\"Shopware\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\",\"url\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\",\"name\":\"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media\",\"isPartOf\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg\",\"datePublished\":\"2021-03-20T04:06:22+00:00\",\"dateModified\":\"2024-12-02T06:52:10+00:00\",\"description\":\"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage\",\"url\":\"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg\",\"contentUrl\":\"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg\",\"width\":1000,\"height\":680,\"caption\":\"3D Render Shopping Cart With Shopping Bag Icon illustration Design.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sumedia-webdesign.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#website\",\"url\":\"https:\/\/www.sumedia-webdesign.de\/blog\/\",\"name\":\"Sumedia Blog\",\"description\":\"Ihr Erfolg, mein Ziel.\",\"publisher\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sumedia-webdesign.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#organization\",\"name\":\"Sumedia Blog\",\"url\":\"https:\/\/www.sumedia-webdesign.de\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/sumedia.myddns.me\/sumedia\/sumedia-webdesign\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2024\/12\/logo-darkbg.png\",\"contentUrl\":\"https:\/\/sumedia.myddns.me\/sumedia\/sumedia-webdesign\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2024\/12\/logo-darkbg.png\",\"width\":370,\"height\":147,\"caption\":\"Sumedia Blog\"},\"image\":{\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/sumediawebdesignrheinhessen\",\"https:\/\/x.com\/SumediaWeb\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/person\/9f1d5cc1dd4dc671a6b4489798b598ae\",\"name\":\"Sven Ullmann\",\"sameAs\":[\"https:\/\/www.sumedia-webdesign.de\"],\"url\":\"https:\/\/www.sumedia-webdesign.de\/blog\/author\/sven-ullmann\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media","description":"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/","og_locale":"de_DE","og_type":"article","og_title":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media","og_description":"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.","og_url":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/","og_site_name":"S.U. Media","article_publisher":"https:\/\/www.facebook.com\/sumediawebdesignrheinhessen","article_published_time":"2021-03-20T04:06:22+00:00","article_modified_time":"2024-12-02T06:52:10+00:00","og_image":[{"width":1000,"height":680,"url":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","type":"image\/jpeg"}],"author":"Sven Ullmann","twitter_card":"summary_large_image","twitter_creator":"@SumediaWeb","twitter_site":"@SumediaWeb","twitter_misc":{"Verfasst von":"Sven Ullmann","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#article","isPartOf":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/"},"author":{"name":"Sven Ullmann","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/person\/9f1d5cc1dd4dc671a6b4489798b598ae"},"headline":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks","datePublished":"2021-03-20T04:06:22+00:00","dateModified":"2024-12-02T06:52:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/"},"wordCount":582,"commentCount":1,"publisher":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","articleSection":["Shopware"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/","url":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/","name":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks - S.U. Media","isPartOf":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage"},"image":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","datePublished":"2021-03-20T04:06:22+00:00","dateModified":"2024-12-02T06:52:10+00:00","description":"Shopware 6 Cronjob zu Debuggen und auch ein Debugging bereitzustellen ist in Shopware 6 nicht so schwierig, wenn man ein paar Feinheiten beachtet. Es sollen sowohl Fehlerausgabe und Logging im Betrieb m\u00f6glich sein um die Anwendung zu Debuggen und um zu verhindern, dass Cronjobs sich in der Datenbank selbst als failed registrieren und nicht mehr ausgef\u00fchrt werden. Weiterhin soll ein CLI Command zur Verf\u00fcgung gestellt werden um das Debugging weiter zu vereinfachen.","breadcrumb":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#primaryimage","url":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","contentUrl":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","width":1000,"height":680,"caption":"3D Render Shopping Cart With Shopping Bag Icon illustration Design."},{"@type":"BreadcrumbList","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/shopware\/shopware-6-cronjob-debugging-messenger-scheduled-tasks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sumedia-webdesign.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Shopware 6 Cronjob Debugging \/ Messenger &amp; Scheduled Tasks"}]},{"@type":"WebSite","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#website","url":"https:\/\/www.sumedia-webdesign.de\/blog\/","name":"Sumedia Blog","description":"Ihr Erfolg, mein Ziel.","publisher":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sumedia-webdesign.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#organization","name":"Sumedia Blog","url":"https:\/\/www.sumedia-webdesign.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/sumedia.myddns.me\/sumedia\/sumedia-webdesign\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2024\/12\/logo-darkbg.png","contentUrl":"https:\/\/sumedia.myddns.me\/sumedia\/sumedia-webdesign\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2024\/12\/logo-darkbg.png","width":370,"height":147,"caption":"Sumedia Blog"},"image":{"@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/sumediawebdesignrheinhessen","https:\/\/x.com\/SumediaWeb"]},{"@type":"Person","@id":"https:\/\/www.sumedia-webdesign.de\/blog\/#\/schema\/person\/9f1d5cc1dd4dc671a6b4489798b598ae","name":"Sven Ullmann","sameAs":["https:\/\/www.sumedia-webdesign.de"],"url":"https:\/\/www.sumedia-webdesign.de\/blog\/author\/sven-ullmann\/"}]}},"jetpack_featured_media_url":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-content\/uploads\/2021\/03\/3d-render-shopping-cart-with-shopping-bag-icon-illustration-design.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/posts\/44","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/comments?post=44"}],"version-history":[{"count":1,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions\/154"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/media\/153"}],"wp:attachment":[{"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sumedia-webdesign.de\/blog\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}