[php5] taskscheduler, un petit planificateur de tâche en php ...

Description

Salut à tous,
J'ai codé cette classe pour résoudre le problème suivant : imaginons que nous ayons un script dont le but est de vérifier la validité des entrées contenues dans une base de données. Le soucis, c'est que l'exécution du script est longue et du coup, le fait de l'exécuter à chaque rafraichissement ralenti considérablement l'affichage.
Du coup, j'ai crée une classe qui permet de configurer et d'automatiser le lancement de tâches à intervalle régulier. Les tâches en question sont en fait de simples classes qui doivent posséder la méthode statique run(). Le nom des tâches à lancer et leur intervalle d'exécution se trouvent dans le fichier de configuration Calendar.conf.

Source / Exemple :


<?php
/* -------------------- */
   include './Task.interface.php';
   include './TaskScheduler.class.php';
   include './Spoutnik.class.php';
   include './Delegate.class.php';
/* -------------------- */
// Exemple de tâche à exécuter, qui va ajouter dans un fichier de log le texte "Bip ! " avec la date associée.
   class Spoutnik implements Task {
      public static function run() {
         $resFile = fopen('Spoutnik.log', 'a+');
         fputs($resFile, '[' . time() . '] Bip ! ' . "\n");
         fclose($resFile);
      }
   }
/* -------------------- */
// Il faut alors ajouter la ligne suivante dans le fichier Calendar.conf pour que la tâche soit lancée toutes les heures : 
//    Spoutnik.ExecutionPeriod=3600
/* -------------------- */
// Enfin, il faut insérer ce code au début de la page du site qui s'affiche par défaut.
   TaskScheduler :: run();
/* -------------------- */
?>

Conclusion :


Il n'y a aucune difficulté majeure dans la compréhension de cette source, mais je m'excuse pour le manque de commentaire (pour être franc, y en a pas, mais pour ma défense, j'ai fait cette classe à l'arrache en cours de droit). De plus, elle est largement optimisable, mais elle a le mérite de faire le travail que l'on lui demande de faire !
N'hésitez pas à faire des commentaires ou des propositions !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.