Création de CRON sous TYPO3

Posté le 19-05-2009

Un CRON permet d’automatiser certaine taches qui doivent être effectuées à des périodes régulières. Sous TYPO3, on s’en sert souvent pour faire des taches hebdomadaires (exemple : crawling du site, importation de flux xml, etc…). Un petit rappel pour mettre au point « proprement » un CRON TYPO3 ne fait jamais de mal ;-) . Sa mise en place nécessite un paramétrage particulier pour que le script puisse accéder au framework TYPO3 et donc profiter de toutes les fonctionnalités..

Tout d’abord, rendez-vous en backend et créer un utilisateur « _cli_lowlevel » (avec un mot de passe sécurisé) qui n’appartient à aucun groupe backend (ni admin, ni membre d’un groupe).

Rendez-vous maintenant dans le répertoire de votre extension « /typo3conf/ext/mon_extension/ ».
Créer un répertoire appelé « cron », on obtient alors « /typo3conf/ext/mon_extension/cron/ ». Reste alors à créer un fichier « mon_extension.php » (/typo3conf/ext/mon_extension/cron/ mon_extension.php) et a y reporter le code suivant :

Ancienne méthode sans cli_dispatch

<?php

/***************************************************************
*  Copyright notice
*
*  (c) 2009 CERDAN Yohann <ycerdan@onext.fr>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

// *****************************************
// Standard initialization of a CLI module:
// *****************************************

 // a renseigner : extension key de votre extension
$extension_key = 'mon_extension';
define('TYPO3_MOD_PATH', '../typo3conf/ext/'.$extension_key.'/cron/');
$BACK_PATH = '../../../../typo3/';
$MCONF['name'] = '_CLI_lowlevel';
define('TYPO3_cliMode', TRUE);
define('PATH_thisScript', __FILE__);
require(dirname(PATH_thisScript).'/'.$BACK_PATH.'init.php');

// *****************************************
// Extras require (ici on peut placer tous les requires supplémentaires)
// *****************************************

require_once(dirname(PATH_thisScript).'/'.$BACK_PATH.'/mod/tools/em/class.em_index.php');
require_once(dirname(PATH_thisScript).'/'.$BACK_PATH.'template.php');

// *****************************************
// Processing (code de l'application)
// *****************************************

// ...

?>

On crée alors un fichier « (/typo3conf/ext/mon_extension/cron/mon_extension.sh » qui execute le code PHP de la manière suivante

#!/bin/sh
/usr/bin/php -q mon_extension.php

Nouvelle méthode avec cli_dispatch (4.2.x)

<?php

/***************************************************************
*  Copyright notice
*
*  (c) 2009 CERDAN Yohann <ycerdan@onext.fr>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

// *****************************************
// Extras require (ici on peut placer tous les requires supplémentaires)
// *****************************************

require_once('xxx');

// *****************************************
// Processing (code de l'application)
// *****************************************

// ...

?>

Du coup, il reste juste à modifier le fichier « /typo3conf/ext/mon_extension/ext_localconf.php » pour y rajouter la ligne suivante :

$TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys']['mon_extension'] = array('EXT:mon_extension/cron/mon_extension.php','_CLI_lowlevel');

Du coup, on peut exécuter le script dans un .sh (comme au dessus) de la manière suivante :

#!/bin/sh
typo3/cli_dispatch.phpsh mon_extension
comments powered by Disqus