Crons deaktivieren wenn Paket deinstalliert wird
Auf mehreren Systemen habe ich das Problem, dass wichtige Crons nicht ausgeführt wurden, z.B.:
#########################################################
# Your quiqqer system is missing some requirements! #
#########################################################
⚠ The Session Cleanup Cron did not run for 7 days. Please check it!
Das liegt daran, dass ich ein Paket installiert hatte, was den Cron angelegt hat. Danach habe ich das Paket deinstalliert, die Cron-Aufgabe möchte immer noch auf die Methode zugreifen, was jeden Tag errors produziert und verhindert, dass weitere Crons ausgeführt werden:
[15-Apr-2023 07:05:01 Europe/Berlin] PHP Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, class "\QUI\Watcher\Cron" not found in .../packages/quiqqer/cron/src/QUI/Cron/Manager.php:407
Stack trace:
#0 .../packages/quiqqer/cron/src/QUI/Cron/Manager.php(407): call_user_func_array()
#1 .../packages/quiqqer/cron/src/QUI/Cron/Manager.php(340): QUI\Cron\Manager->executeCron()
#2 .../packages/quiqqer/quiqqer/lib/QUI/System/Console.php(742): QUI\Cron\Manager->execute()
#3 .../packages/quiqqer/quiqqer/lib/QUI/System/Console.php(264): QUI\System\Console->executeSystemTool()
#4 .../packages/quiqqer/quiqqer/quiqqer.php(27): QUI\System\Console->__construct()
#5 .../console(26): require('...')
#6 {main}
thrown in .../packages/quiqqer/cron/src/QUI/Cron/Manager.php on line 407
Übrigens. quiqqer/watcher
habe ich nicht direkt installiert. Das kam als eine weitere Abhängigkeit von einem Paket, was ich kurz auprobieren wollte
Lösung
Die automatisch angelegten Crons beim Deintallieren von Paketen direkt entfernen. Oder zumindest deaktivieren (ich würde "entfernen" bevorzugen). Idealerweise müsste man bei jedem Setup schauen, ob die Pakete noch da sind (wenn man sie über die Haupt-composer.json-Datei direkt "entfern"), wenn nicht --> Cron löschen.
Ich denke, es ist keine Lösung zu sagen "der Benutzer muss wissen was er macht". Wir, Super-Entwickler, kriegen das Problem noch relativ schnell behoben. Aber wir wollen, das QUIQQER groß wird und von normalen Nutzern benutzt wird. Ich kann mir vorstellen, dass sie über den integrierten Shop Erweiterungen installieren werden, um sie einfach auszuprobieren. Ich mache das genauso, wenn ich mit Wordpress rumspiele. Man kann von Benutzern, die gar keine Ahnung von Crons haben, nicht erwarten, dass sie die passenden Crons per Hand deaktivieren.
Ich lasse das Tickt bei @peat. Wenn du @mor andere / weitere Idee hast, kannst bitte hier posten. Oder das Ticket schließen, wenn das aktuelle Vorgehen so bleiben soll.