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