BETA
Tower
offline online current

Artikel

< Ein eigenes TER

Den Scheduler nutzen

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.

Crosspost von t3blog.de


11.12.2011 22:50 Alter: 161 days
Kategorie: TYPO3