Scheduler Task erstellen in TYPO3

Der Cronjob muss folgendes CLI Skript mit einem PHP Interpreter aufrufen:

TYPO3 Scheduler Setup Check

Der obere Teil: Last run zeigt wann zum letzten Mal der Scheduler ausgeführt wurde. Die grüne Fläche bei CLI Skript zeigt, daß Typo3 Zugriff auf das nötige CLI Skript hat. Wenn ihr euren Cronjob auf dem Server korrekt eingestellt habt, dann wird der obere Teil ebenfalls grün, sobald der Scheduler ausgeführt wurde.

Falls das Typo3 anzeigt, daß es keinen Zugriff auf das obige Skript hat, dann müsste ihr per FTP auf euren Webserver gehen und ausführbare Rechte für den Besitzer (und evtl. der Gruppe) geben. Die ausführbaren Rechte sollten nicht öffentlich sein. Ein chmod - Wert von 540 bzw. 550 sollte ausreichen.

Cronjob einrichten

Den Cronjob könnt ihr bei vielen Providern in der Administrationsoberfläche einrichten. Alternativ geht das per SSH und dem

crontab -e 

Befehl. Dort schreibt ihr in einer neuen Zeile den Pfad zu eurem PHP Binary, das müsste ihr beim Provider erfragen oder aus der phpinfo(); ziehen. Meistens liegt es bei

/usr/bin/php

gefolgt von den Zeitabständen in der das Skript aufgerufen werden soll. Eine Erläuterung dazu findet ihr hier. Ich empfehle einen 5-minütigen Abstand zu Anfang, wenn euer Webserver das problemlos stämmen kann, dann lässt sich dieser auch noch weiter verkürzen. Ich würde es aber persönlich nicht unter einer Minute machen.
Das Beispiel mit 5 Minuten kann dann so aussehen:

/usr/bin/php */5 * * * * /pfad/zur/webseite/typo3/sysext/core/bin/typo3 scheduler:run

Falls ihr den Pfad nicht kennt, dann könnt ihr das in der Konsole per SSH mit dem Befehl: pwd herausfinden oder in der phpinfo() nach DOCUMENT_ROOT suchen.

Scheduler Task

Jeder Scheduler Task erbt von der abstrakten Klasse: \TYPO3\CMS\Scheduler\Task\AbstractTask. In seinem Task muss man die Funktion: execute() ausprogrammieren. Diese ist die Funktion die vom Scheduler aufgerufen wird.

namespace Slavlee\SlavleeCommunications\Tasks;
   
class Task extends \TYPO3\CMS\Scheduler\Task\AbstractTask
{
    /**
     * This method executes the given task and properly marks and records that execution.
     * It is expected to return FALSE if the task was barred from running or if it was not saved properly
     */
    public function execute() 
    {
        //Your code
        return TRUE;
    }
}

Damit dein Task im Scheduler gefunden und auswählbar wird, muss man in der ext_localconf.php folgenden Eintrag vornehmen:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks']['Slavlee\SlavleeCommunications\Tasks'] = array(
    'extension' => $_EXTKEY,
    'title' => 'LLL:slavlee_communications/Resources/Private/Language/localconf.xlf:scheduler.exampleTask.title',
    'description' => 'LLL:slavlee_communications/Resources/Private/Language/localconf.xlf:scheduler.exampleTask.description',
);

Den Titel und die Beschreibung lade ich aus der Sprachdatei, das ist eine gute Angewohntheit, dass man alle Texte in die Sprachdatei auslagert. Selbst wenn man kein mehrsprachige Extension schreibt. Denn auf dieser Weise lassen sich alle Texte auch via TypoScript überschreiben.

Falls du weitere Fragen hast oder Unterstützung brauchst, dann besuche mein Facebook Seite oder kontaktiere mich via Kontaktformular.

Extensionentwicklung mit Typo3 CMS V8.7.x

Der perfekte Einstieg in die Extensionentwicklung mit Extbase und Fluid.

Du wirst unter anderem lernen:

  • Frontend Plugins
  • Backend Module
  • Scheduler Tasks

zur schreiben und wie man AJAX in TYPO3 implementiert.

Überzeuge dich wie hundert andere Teilnehmer vor dir. Du erhälst weltweiten Zugriff auf allen Geräten mit einer einmaligen Buchung. Es gibt keine versteckten Kosten oder Abofallen! Alles einfach und transparent dank Udemy.

Lerne noch heute TYPO3 Extensions professionell zu programmieren.

Hier geht es zum Kurs