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

2/5 (6 avis)

Vue 8 921 fois - Téléchargée 631 fois

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

Ajouter un commentaire Commentaires
kairi084 Messages postés 9 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 juillet 2010
16 nov. 2008 à 18:50
Bonjour, quelqu'un pourrait il m'expliquer comment installer cette petite aplication.
Je l'ai mis sur mon serveur et il me met
Parse error: syntax error, unexpected T_STRING in Task.interface.php on line 3

si quelqu'un pouvait m'aider =(
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
12 nov. 2007 à 10:26
J'avoue qu'au niveau de la sécurité, c'est pas très grave. Maintenant, si ça te pose vraiment problème, tu peux changer le chemin du fichier de configuration et le mettre dans un répertoire protégé par un .htaccess ou autre.
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
12 nov. 2007 à 09:19
Au niveau sécurité, comme tu dit Emilia123. Ce n'est pas très grave, il n'y a pas de données importantes divulguées dans le fichier (normalement...) juste un fichier à executer, à une date précise (ou un interval de temps régulier)
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
12 nov. 2007 à 08:01
bonjour,

J'ai pas testé le fonctionnement par contre la vision de la liste des fichiers me fait remonter un petit problème sur le nom du fichier de configuration.
Que cela soit un fichier .conf ou .xml comme proposé ci dessus, il est possible d'en afficher le contenu dans un browser, ce qui pourrait etre moyen si des infos confidentielles devaient etre présentes.
Ne serait il pas possible de le mettre avec extension .php, pour que son contenu redevienne "sécurisé" ?

bonne continnuation

EM.
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
10 nov. 2007 à 15:52
Merci pour la note, ça fait plaisir !
Pour le paramétrage du fichier de configuration, je suis d'accord. Mais pour ma défense, je répète que j'ai codé ça en speed ...
Et pour WebCron ... Bah je suis un boulet. J'avais qu'à chercher avant de faire ce TaskScheduler. Au moins, le droit est passé plus vite que d'habitude.
++ !
L.S.
Afficher les 6 commentaires

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.