Cronjob mit TYPO3 mit dem CLI-Interface

Um in einer Extension einen Cronjob nutzen zu können, hat TYPO3 eine eigene Schnittstelle: CLI (Command Line Interface)

Diese Schnittstelle ermöglicht die Ausführung von php innerhalb TYPO3 auf der Console, sehr praktisch für Cronjobs.

Um CLI zu nutzen muss man folgende Schritte unternehmen:

  • Installieren der Sysextension lowlevel (ist defaultmäßig installiert)
  • Erstlle einen BE-User _cli_cronjob (er braucht keine Rechte, muss nur vorhanden sein
  • Erzeuge einen Ordner cli im Extensionverzeichnis
  • Erzeuge folgende 2 Dateien im Ordner cli:
conf.php
<?php
// DO NOT REMOVE OR CHANGE THESE 3 LINES:
define('TYPO3_MOD_PATH', '../typo3conf/ext/yourextension/cli/');
$BACK_PATH = '../../../../typo3/';
$MCONF['name'] = '_CLI_cronjob'; //use name of your BE-User
?>
cronjob.phpsh
#! /usr/bin/php -q
<?php
 
// *****************************************
// Standard initialization of a CLI module:
// *****************************************
 
 // Defining circumstances for CLI mode:
define('TYPO3_cliMode', TRUE);
 
 // Defining PATH_thisScript here: Must be the ABSOLUTE path of this script in the right context:
 // This will work as long as the script is called by it's absolute path!
define('PATH_thisScript',$_ENV['_']?$_ENV['_']:$_SERVER['_']);
 
 // Include configuration file:
require(dirname(PATH_thisScript).'/conf.php');
 
 // Include init file:
require(dirname(PATH_thisScript).'/'.$BACK_PATH.'init.php');
 
# HERE you run your application!
 
?>

Das war schon alles. Im code kann man den DB-Wrapper benutzen und auch die sonstigen TYPO3-Methoden.

Wichtig bei der Ausführung ist es, das script absolut aufzurufen:

/var/www/.../typo3conf/ext/yourextension/cli/cronjob.phpsh

Hilfreich ist es auch, Ausgaben über echo in eine Logdatei zu leiten:

/var/www/.../typo3conf/ext/yourextension/cli/cronjob.phpsh >>  /var/www/.../fileadmin/logs/cronjob.log


Es ist sinnvoll, mehrere Aktionen im Script zu ermöglichen. Dies kann man mit Kommandozeilenparametern erreichen. Um diese auszuwerten muss man nur das Array $_SERVER["argv"] analysieren.

Die Extension lowlevel hat schon einige nützliche Aktionen für Cronjobs, es lohnt sich, die Datei HOWTO_clean_up_TYPO3_installations.txt im Extensionverzeichnis zu studieren!

Viel Spass bei den Cronjobs.

8 Kommentare
#8 Ahhe schrieb am 21.05.2012 16:32

Hi I know that is a old post but are this working with 4.5 or there are another way to get cronjobs to work, if this working how to execute my function using it.

#7 Klaus schrieb am 01.05.2010 12:03

Hi,

habe die Installation in der Extension xml_ttnews_import vorgenommen.

 

Nun weiß ich aber nicht, wie/wo ich die Ausführung des Scripts definiere.

 

Klaus

#6 Boris Weisgerber schrieb am 22.05.2009 08:46

Bei mir habe ich den TYPO3_MOD_PATH ohne das Verzeichnis cli gesetzt, dann ging es.

 

Also: define('TYPO3_MOD_PATH', '../typo3conf/ext/yourextension/');

#5 Frank schrieb am 07.05.2009 15:34

ich bekomme eine

Error in init.php: Path to TYPO3 main dir could not be resolved correctly

 

hast du eine Ahnung woran es liegen könnte? (seite liegt bei mittwald...falls das hifreich ist)

#3 Julian schrieb am 18.03.2009 11:16

Hallo.

Der Artikel und Dein letzter Kommentar widersprechen sich doch, oder? Oben steht zum BE-User "er braucht keine Rechte, muss nur vorhanden sein", im Kommentar "benutzt nur den User und seine Rechte". Braucht/Nutzt das Skript BE-Userrechte?

 

Viele Grüße

Julian

#4 Steffen schrieb am 19.03.2009 11:39

Das hängt vom cli-Script ab. i.d.R. muss nur ein BE_USER vorhanden sein, ich kenne im Moment keine cli-Skripte die Rechtebezogene Sachen durchführen.

#1 Christian Hünniger schrieb am 25.03.2008 17:26

Hallo,

 

was für ein Passwort gibt man dem BE User?

 

 

Gruss

#2 steffen schrieb am 25.03.2008 18:27

spielt keine Rolle, da das Script sich nicht einloggt. Es benutzt nur den User und seine Rechte.

Wenn man also spezielle Rechte braucht, muss man sie dem BE-User geben.

einen Kommentar schreiben
Typo3