Créer des taches CRON simplement avec Symfony
11 juillet 2009En pleine préparation de la version 2 de bloginy, je me suis mis à chercher la meilleure manière de faire des tâches cron avec symfony (des scripts qui s’exécutent périodiquement). La solution qui me convenait le plus était d’utiliser les tâches Symfony.

Les tâches Symfony
Vous savez, c’est toutes ces commandes qu’on lance à partir du terminal avec un namespace et un nom de tâche pour initialiser un projet par exemple ou construire le modèle de données (./symfony propel:build-model) ou toute autre commande.
Création de la tâche
Eh bain symfony nous permet de créer des tâches personnalisés à l’aide de la commande
./symfony generate:task monnamespace:matache
un fichier PHP est donc créé dans le dossier ‘lib/task’ de votre projet, que vous pouvez personnaliser très aisément, puisque vous pouvez accéder directement aux classes du model.
addArguments(array(
// new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'),
// ));
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel'),
// add your own options here
));
$this->namespace = 'monnamespace';
$this->name = 'matache';
$this->briefDescription = '';
$this->detailedDescription = <<configuration);
$connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection();
// add your code here
}
}
Vous pouvez personnalisez ce fichier pour donner un titre et une description à cette tâche.
Une fois votre tâche créée et personnalisée, il ne vous reste plus qu’à créer la tâche CRON qui appelle cette tâche avec la commande suivante : ./symfony monnamespace:matache
Exemple d’une tache :
Voici un exemple de tâche que j’ai créé pour Bloginy.
class bloginyUpdateblogsfeedsTask extends sfBaseTask
{
protected function configure()
{
// // add your own arguments here
// $this->addArguments(array(
// new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'),
// ));
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel'),
// add your own options here
));
$this->namespace = 'bloginy';
$this->name = 'update-blogs-feeds';
$this->briefDescription = 'Met à jour les flux des blogs inscrits sur Bloginy';
$this->detailedDescription = <<configuration);
$connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection();
// add your code here
$count = BlogPeer::updateBlogFeeds();
printf('%s articles ont été ajoutés à Bloginy.',$count);
}
}
Vous pouvez voir ici que tout le fonctionnement de cette tâche est effectué dans la classe du modèle « BlogPeer ».
Voilà j’espère que ça pourra aider plus d’un
Chargement ...


Youknowriad sur Blogasty
le 11 juillet 2009 à 16:24Retrouvez cet article sur Blogasty …
Vous aimez cet article? Votez pour lui sur Blogasty …
Djafar Inal (inalgnu) 's status on Monday, 13-Jul-09 22:13:15 UTC - Identi.ca
le 14 juillet 2009 à 0:13[...] http://youknowriad.nomade-dz.com/creer-des-taches-cron-simplement-avec-symfony/ [...]