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

Une fois le SH prêt

On peut alors placer le script .sh en CRON, pour cela, je vous conseil fortement WIKIPEDIA qui explique plutôt bien sa mise en place.

comments powered by Disqus