TYPO3-Scheduler integrieren
Die Integration des integrierten Schedulers in TYPO3 ist denkbar einfach.
Zu allererst benötigt der Scheduler einen Benutzer, als der er seiner Aufgabe nachgehen kann. Der Benutzername ist hartcodiert und TYPO3-weit als
_cli_scheduler
vorgegeben. Dieser Benutzer braucht (in der Regel) keine besonderen Berechtigungen, er muss schlicht und ergreifend existieren (auch das vergebene Passwort ist dahingehend irrelevant). Er darf NICHT mit Administrator-Rechten arbeiten.
Ist der Benutzer angelegt, ist die TYPO3-seitige Arbeit schon erledigt. Was nun noch fehlt, ist der Cronjob selbst. Für Linux (ob und wie dies auch mit anderen Betriebssystemen realisierbar ist, gilt es zu prüfen) ist das Vorgehen zum Anlegen des Crons wie folgt:
Man öffnet die Konsole des Servers, auf dem die TYPO3-Installation läuft und wechselt zum entsprechenden Benutzer. Dies kann zum Beispiel folgendermaßen aussehen:
su -s /bin/bash - user32
Um herauszufinden, welcher Benutzer der Richtige ist, bietet es sich an, ins Wurzelverzeichnis der Seite, für die der Scheduler installiert werden soll, zu wechseln und sich dort über
ls -la
den Verzeichnisinhalt anzeigen zu lassen. Das Resultat dürfte dann in etwa folgendermaßen aussehen:
4 drwxrwx--- 2 vu2113 www-data 4096 2. Dez 12:21 backups 4 drwxr-xr-x 2 user32 gruppe32 4096 2. Dez 12:21 cgi-bin 4 drwxr-xr-x 3 www-data www-data 4096 2. Dez 12:21 disabled 4 drwxrwxr-x 3 user32 gruppe32 4096 2. Dez 12:21 errors 4 drwxrwxr-x 23 user32 gruppe32 4096 24. Apr 13:32 htdocs 4 drwxrwx--- 2 user32 www-data 4096 7. Mär 02:41 logs 120 drwxrwx--- 2 user32 www-data 118784 24. Apr 13:32 phptmp 4 drwxr-xr-x 5 user32 gruppe32 4096 5. Mär 13:23 relaunch
Die vierte Spalte ist von Interesse, in diesem Fall wäre daher der Benutzer „user32“ die Richtige Wahl.
Hat man nun die Rolle des richtigen Systembenutzers angenommen, ermittelt man, wo sich die PHP-Binary befindet. Dies ist am einfachsten über
which php
oder
which php5
herauszufinden.
In der Regel bekommt man hier etwas in der Form
/usr/bin/php5
zurück.
Nun öffnet man über
crontab -e
die Cronjob-Tabelle.
Jetzt geht es ans Eingemachte:
In die Crontab fügt man nun die folgende Zeile ein:
*/5 * * * * test -x ~/htdocs/typo3/cli_dispatch.phpsh && /usr/bin/php5 ~/htdocs/typo3/cli_dispatch.phpsh scheduler > /dev/null 2>&1
Zur Erklärung:
*/5 sagt dem Cron, er möge alle fünf Minuten laufen (in jeder Minute, die durch 5 ohne Rest teilbar ist, selbstverständlich kann man hier auch andere Intervalle definieren)
* jede Stunde
* jeden Tag des Monats
* jeden Monat
* jeden Tag der Woche
Zur näheren Erläuterung möglicher Interval-Einstellungen siehe bspw. http://wiki.ubuntuusers.de/Cron
Die vorangestellte Prüfung
test -x ~/htdocs/typo3/cli_dispatch.phpsh
stellt sicher, dass das aufzurufende Skript existiert und über CLI ausführbar ist. Nur bei positiver Prüfung wird das Script mit
/usr/bin/php5 ~/htdocs/typo3/cli_dispatch.phpsh scheduler
gestartet. Mit
> /dev/null 2>&1
leiten wir sämtliche Ausgaben nach /dev/null um (so stellt man sicher, dass Fehler im Cron keine Mailflut verursachen).
Wichtig: Vor dem Abspeichern der geänderten Crontab muss sichergestellt sein, dass die Datei mit einer leeren Zeile endet.
Damit wäre der Scheduler eingerichtet und bereit. Neuere TYPO3-Versionen von TYPO3 bringen bereits einen Task „Update Extension List (em)“ mit. Mit diesem kann man die Funktionstüchtigkeit des Crons testen.
Wer es eilig hat, kann auch gerne mal die Extension „ml_autoinstall_scheduler“ (verfügbar übers TER) ausprobieren. Diese versucht, die selben Schritte automatisiert auszuführen.
Wow! Danke!