Aller au contenu principal

Il est parfois utile que certaines tâches appartiennent à une application et soient exécutées dans un environnement donné. Ceci pour leur permettre d’accéder aux variables de configuration du fichier app.yml de l’application en question.

Pour obtenir ce résultat, il faut déclarer un argument 'application' et une option 'env', initialisés respectivement à l’application et à l’environnement souhaités. Cela une fonction configure qui commence ainsi:

class doHelloWorldTask extends sfBaseTask
{
 protected function configure()
 {
    $this->addOptions(array(
      new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'backend'),
      new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
    ));
    [...]
 }

Ensuite il est alors possible d’accéder aux données du fichier app.yml de l’application en question. Exemple dans la fonction execute:

 protected function execute($arguments = array(), $options = array())
 {
   $conn_id = @ftp_connect(sfConfig::get('app_ftp_server_host')); 
   [...]
 }

L’inconvénient de cette méthode est qu’elle ne permet pas de figer l’application dans la tâche.

Les logs, sous MySQL, c'est quand même bien pratique pour voir ce qui se passe sur un serveur et pour tracer les requêtes qui plantent. Et lorsqu'on vient de changer de version de serveur MySQL pour passer à la version 5.1 pour profiter des dernières nouveautés, il est déplaisant de voir les logs disparaître.

Heureusement la solution est disponible sur le site MySQL: il s'agit d'une nouvelle option dans le fichier my.conf:

 #log dans les tables et dans le fichier
 log-output = FILE,TABLE
 
 #log dans un fichier uniquement
 log-output = FILE