Créer des taches CRON simplement avec Symfony

11 juillet 2009

En 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.

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 ;)

2 commentaires pour “Créer des taches CRON simplement avec Symfony”

Flux rss des commentaires de cet article :.: Ajouter un commentaire
  1. Youknowriad sur Blogasty

    Retrouvez cet article sur Blogasty …

    Vous aimez cet article? Votez pour lui sur Blogasty …

  2. Djafar Inal (inalgnu) 's status on Monday, 13-Jul-09 22:13:15 UTC - Identi.ca

    [...] http://youknowriad.nomade-dz.com/creer-des-taches-cron-simplement-avec-symfony/ [...]

Laisser un commentaire