Mit der Version 4.3 wurde TYPO3 um den “Scheduler” erweitert. Ziel ist es, automatisierte Aufgaben zu bestimmten Zeiten auszuführen. Früher wurde dazu in der Regel ein CLI-Script über Cron aufgerufen. Der Scheduler stellt eine zentrale Verwaltung dieser Aufgaben zur Verfügung. Um den Scheduler nutzen zu können, muss die System-Extension scheduler installiert sein. Des weiteren muss der Benutzer _cli_scheduler existieren. Dieser benötigt keine Admin-Rechte, sollte aber zur Sicherheit mit einem sicheren Passwort geschützt werden. Der Cron-Job ruft dann nur noch das Scheduler-Script auf. Der Pfad dazu wird im Backendmodul angezeigt. Extensions die den Scheduler einsetzen sollen, müssen ihre Tasks über einen Hook in der ext_localconf.php der Extension registrieren. In folgenden Listings sind “extkey” und “TaskName” durch entsprechende Werte zu ersetzen, also dem Extension-Key und einem Namen für den Task.
$TYPO3_CONF_VARS['SC_OPTIONS']['scheduler']['tasks']['tx_extkey_TaskName'] = array(
'extension' => $_EXTKEY,
'title' => 'LLL:EXT:'.$_EXTKEY.'/locallang.xml:TaskName.name',
'description' => 'LLL:EXT:'.$_EXTKEY.'/locallang.xml:TaskName.description',
);
Die Übersetzung wird in der Datei locallang.xml hinterlegt, die, sofern sie nicht schon existiert, dafür angelegt wird. Der Aufbau kann aus der locallang_db.xml übernommen werden.
Als nächstes wird die Datei ext_autoload.php im Extension-Verzeichnis angelegt. Diese enthält folgenden Inhalt:
<?php
return array(
'tx_extkey_TaskName' => t3lib_extMgm::extPath('extkey', 'scheduler/class.tx_extkey_TaskName.php')
);
?>
Der eigentliche Code, der ausgeführt werden soll, wird in die Datei scheduler/class.tx_extkey_TaskName.php geschrieben. Diese erweitert die Klasse tx_scheduler_Task und enthält die Funktion execute(), die vom Scheduler aufgerufen wird.
<?php
class tx_aebhotelbewimport_import extends tx_scheduler_Task {
public function execute() {
// Hier kommt all der lustige Code, der ausgeführt werden soll.
}
}
?>
Den Return-Wert der Funktion execute() sollte man nicht vergessen, damit der Scheduler den Erfolg oder Misserfolg der Ausführung verwerten kann. Der Return-Wert ist entweder true oder false. Die Datenbankfunktionen, t3lib_div etc. stehen zur Verfügung. Auch auf $GLOBALS und $TYPO3_CONF_VARS kann zugegriffen werden. Die zeitliches Konfiguration wird im Backendmodul des Schedulers eingestellt.