Typo3 Command Line Interface (CLI): Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | Von Tim Lochmüller im Adventskalender 2008 | + | |
| + | == Von Tim Lochmüller im Adventskalender 2008 == | ||
| + | |||
Heute im Türchen 15 möchte ich Euch die Verwendung des Command Line Interface (CLI) von TYPO3 näher bringen. Das CLI bietet sich immer an, wenn man Prozesse automatisieren möchte. Dies gilt z.B. für tägliche Erinnerungsmails, welche jeden morgen um 9 Uhr versendet werden sollen. Genau an diesem Beispiel möchte ich Euch nun zeigen, wie sowas geht: | Heute im Türchen 15 möchte ich Euch die Verwendung des Command Line Interface (CLI) von TYPO3 näher bringen. Das CLI bietet sich immer an, wenn man Prozesse automatisieren möchte. Dies gilt z.B. für tägliche Erinnerungsmails, welche jeden morgen um 9 Uhr versendet werden sollen. Genau an diesem Beispiel möchte ich Euch nun zeigen, wie sowas geht: | ||
| Zeile 5: | Zeile 7: | ||
Es sind nur 5 einfach Schritte nötig: | Es sind nur 5 einfach Schritte nötig: | ||
| − | 1. Backend User | + | '''1. Backend User''' |
| + | |||
Wir benötigen einen Backend-User, welcher für die Ausführung benötigt wird. Dieser sollte mit "_cli_" beginnen. Wir nennen ihn mal "_cli_myext", das Passwort ist eigentlich egal, da das CLI sich nicht ins Backend einloggt, jedoch könnte dieser User bei einem schwachen Passwort böswillig verwendet werden. Aus diesem Grund sollten ein sehr kryptisches Passwort gewählt werden. | Wir benötigen einen Backend-User, welcher für die Ausführung benötigt wird. Dieser sollte mit "_cli_" beginnen. Wir nennen ihn mal "_cli_myext", das Passwort ist eigentlich egal, da das CLI sich nicht ins Backend einloggt, jedoch könnte dieser User bei einem schwachen Passwort böswillig verwendet werden. Aus diesem Grund sollten ein sehr kryptisches Passwort gewählt werden. | ||
| − | + | ''' | |
| − | 2. Registrierung des CLI Scripts | + | 2. Registrierung des CLI Scripts''' |
Um das CLI nutzen zu können, müssen wir nun unser Script registrieren, dazu ist folgender Eintrag in der Datei ext_localconf.php notwendig: | Um das CLI nutzen zu können, müssen wir nun unser Script registrieren, dazu ist folgender Eintrag in der Datei ext_localconf.php notwendig: | ||
| Zeile 20: | Zeile 23: | ||
Hierbei ist zu beachten, dass der Backend-User mit angeben wird. | Hierbei ist zu beachten, dass der Backend-User mit angeben wird. | ||
| − | 3. Das CLI Script selbst | + | '''3. Das CLI Script selbst''' |
| + | |||
Als nächstes benötigen wir das CLI Script selbst: | Als nächstes benötigen wir das CLI Script selbst: | ||
| − | < ?php | + | <pre> |
| + | <?php | ||
if (!defined('TYPO3_cliMode')) die('You cannot run this script directly, only from the command line!'); | if (!defined('TYPO3_cliMode')) die('You cannot run this script directly, only from the command line!'); | ||
| Zeile 63: | Zeile 68: | ||
?> | ?> | ||
| + | </pre> | ||
| + | |||
| + | '''4. Der Aufruf''' | ||
| − | |||
Möchte man das CLI jetzt testen, dann brauchen wir nur die folgende Zeile in einer Shell aufrufen: | Möchte man das CLI jetzt testen, dann brauchen wir nur die folgende Zeile in einer Shell aufrufen: | ||
| − | /path/to/typo3/cli_dispatch.phpsh myext sendMails | + | /path/to/typo3/cli_dispatch.phpsh myext sendMails |
| + | |||
| + | '''5. Der cronJob''' | ||
| − | |||
Da wir die Mails ja jeden morgen um 9 Uhr versenden möchte, brauchen wir noch einen Eintrag in der cronTab: | Da wir die Mails ja jeden morgen um 9 Uhr versenden möchte, brauchen wir noch einen Eintrag in der cronTab: | ||
Version vom 17. August 2009, 15:43 Uhr
Von Tim Lochmüller im Adventskalender 2008
Heute im Türchen 15 möchte ich Euch die Verwendung des Command Line Interface (CLI) von TYPO3 näher bringen. Das CLI bietet sich immer an, wenn man Prozesse automatisieren möchte. Dies gilt z.B. für tägliche Erinnerungsmails, welche jeden morgen um 9 Uhr versendet werden sollen. Genau an diesem Beispiel möchte ich Euch nun zeigen, wie sowas geht:
Es sind nur 5 einfach Schritte nötig:
1. Backend User
Wir benötigen einen Backend-User, welcher für die Ausführung benötigt wird. Dieser sollte mit "_cli_" beginnen. Wir nennen ihn mal "_cli_myext", das Passwort ist eigentlich egal, da das CLI sich nicht ins Backend einloggt, jedoch könnte dieser User bei einem schwachen Passwort böswillig verwendet werden. Aus diesem Grund sollten ein sehr kryptisches Passwort gewählt werden. 2. Registrierung des CLI Scripts Um das CLI nutzen zu können, müssen wir nun unser Script registrieren, dazu ist folgender Eintrag in der Datei ext_localconf.php notwendig:
if (TYPO3_MODE=='BE') {
$TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'][$_EXTKEY] = array( 'EXT:'.$_EXTKEY.'/class.tx_myext_cli.php', '_cli_myext' );
}
Hierbei ist zu beachten, dass der Backend-User mit angeben wird.
3. Das CLI Script selbst
Als nächstes benötigen wir das CLI Script selbst:
<?php
if (!defined('TYPO3_cliMode')) die('You cannot run this script directly, only from the command line!');
require_once(PATH_t3lib.'class.t3lib_cli.php');
class tx_myext_cli extends t3lib_cli {
function tx_myext_cli() {
parent::t3lib_cli();
$this->cli_help['name'] = 'Reminder-Mailings';
$this->cli_help['synopsis'] = '###OPTIONS###';
$this->cli_help['description'] = 'send reminder mailings';
$this->cli_help['examples'] = '/.../cli_dispatch.phpsh myext sendMails';
$this->cli_help['author'] = 'Frank Nägler, (c) 2008';
}
function cli_main($args) {
// extract task
$task = (string) $this->cli_args['_DEFAULT'][1];
switch ($task) {
case 'sendMails':
$this->sendMails();
break;
default:
$this->cli_validateArgs();
$this->cli_help();
exit;
break;
}
}
function sendMails() {
// send some mails
}
}
// Call the functionality
$cliObj = t3lib_div::makeInstance('tx_myext_cli');
$cliObj->cli_main($_SERVER['argv']);
?>
4. Der Aufruf
Möchte man das CLI jetzt testen, dann brauchen wir nur die folgende Zeile in einer Shell aufrufen:
/path/to/typo3/cli_dispatch.phpsh myext sendMails
5. Der cronJob
Da wir die Mails ja jeden morgen um 9 Uhr versenden möchte, brauchen wir noch einen Eintrag in der cronTab:
0 9 * * * /path/to/typo3/cli_dispatch.phpsh myext sendMails
Das war es schon, die Möglichkeiten sind quasi unerschöpflich. Viel Spaß und viel Erfolg mit dem nächsten cronJob