Console
Einführung
Die Console ermöglicht REDAXO Funktionen direkt über das Commandline Interface (CLI) des Systems auszuführen. Dies kann genutzt werden, um Code unabhängig von einem HTTP Request direkt auf dem Server über die Systemconsole auszuführen.
Console Befehle können unter anderem für folgende Aufgaben eingesetzt werden:
- REDAXO-Installation
- AddOn-Installation / Deinstallation
- Schnittstelle für erweitere/spezielle Funktionen/Vorgänge
- Automatisierung/Skripting von Abläufen mit Zugriff auf das System
- Umgebung um sehr aufwändige prozesse wie migrationen o.ä. Ablaufen zu lassen, ohne timeouts etc.
- Fernwartung des Systems
- Automatisierte Veröffentlichungsprozesse der Entwicklungsstände von Websiten (Deploy-Workflows)
- via AddOns erweiterbar (Kommandos registrierbar, siehe untenstehendes Beispiel)
Aufruf der Console
php redaxo/bin/console`
oder
redaxo/bin/console`
(Hierbei sollte die Datei console
ausführbar)
Je nach System ist es ggf. erforderlich, die Console unter dem PHP-User bzw. Eigentümer des Webordners auszuführen. In diesem Fall lautet der Befehl:
sudo -u username php redaxo/bin/console
Für Docker exec sollte man -u username
an den Befehl anfügen.
Hilfe
Der einfache Aufruf der Console per console
ohne Parameter liefert eine Liste aller
aktuell verfügbaren Consolen-Kommandos.
Um mehr Informationen und Optionen zu den einzelnen Befehl zu erhalten fügt man dem Aufruf des Befehls --help
als Parameter an.
z.B: console cache:clear --help
Entwicklung eigener Consolen-Skripte
run.php
Die Ausführung eines Console Befehls erfordert eine eigene Klasse, die auf rex_console_command
aufbaut und den ausführbaren Code selbst enthält bzw. aufruft. In dieser Klasse muss es eine Methode execute
geben. Die einfachste Form sieht etwa so aus:
class mein_console_befehl extends rex_console_command {
protected function execute() {
echo "hallo redaxo"; // beliebiges php hier
}
}
Falls die implementierte Funktionalität sowohl via Weboberfläche als auch REDAXO Console zugreifbar sein sollte, würde es sich anbieten die entsprechende Logik in einer separaten PHP Klasse zu implementieren und diese aus der o.g. Klasse heraus aufzurufen.
package.yml
Damit der ausführbare Befehl in der REDAXO Console zugänglich ist, muss er noch in der package.yml eines AddOns als solcher definiert werden.
Beispiel
console_commands:
meinaufruf:befehl: mein_console_befehl
Artikel bearbeiten