Fichier unique pour déclenchement webcron

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 994 fois - Téléchargée 16 fois

Contenu du snippet

Pour ceux qui n'ont pas accès à la crontable de leur hébergement et qui utilise un service du genre webcron.

C'est un fichier unique permettant de gérer différents cron basé sur un appel toutes les heures du fichier par un service de webcron.

Le fichier inclue un contrôle d'accès HTTP et affiche le nom des fonctions exécuter.

Cette version ne gère pas les arguments car je n'en ai pas besoin mais il suffit de changer presque rien pour que ça les gère.(cf explication call_user_func dans le manuel php)

Source / Exemple :


<?php
// liste des cron
function HelloWorld(){
	echo "Hello World";
}
//crontab
$crontab = array(
	array('hours'=>"ALL",'wday'=>"ALL",'mday'=>"ALL",'mon'=>"ALL",'year'=>"ALL",'name'=>"HelloWorld")
);
/*********************************************************************
Protection par mot de passe

                                                                                                                                            • /
// on test si $_SERVER['PHP_AUTH_USER'] et si $_SERVER['PHP_AUTH_PW'] possède une valeur // si c'est le cas on peux tester le login et le password if ( (isset($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']) && !empty($_SERVER['PHP_AUTH_PW']))) { // on récupère le tout dans des variables $PHP_AUTH_USER = strip_tags($_SERVER['PHP_AUTH_USER']); $PHP_AUTH_PW = strip_tags($_SERVER['PHP_AUTH_PW']); //verification des password $user = $PHP_AUTH_USER; $pwd = $PHP_AUTH_PW; if($user!="user" || $pwd !="pwd"){ header('HTTP/1.0 401 Unauthorized'); echo 'Unauthorized'; exit; } } else { // rien ne doit être sorti avant ceci // on demande de s'identifier avec le texte $my_message $my_message = "Login et mot de passe de connexion"; header('WWW-Authenticate: Basic realm="' . $my_message . '"'); header('HTTP/1.0 401 Unauthorized'); // en cas d'annulation echo 'En cas de problème, contacter l\'aministrateur.'; exit; } /***********************************************************************/ /* fonctionne avec un webcron ou cron activé toutes les heures. hours : 0 - 23 + ALL pour toutes les heures wday : 0-6 (dimanche à samedi) + ALL pour tous les jours mday : 1-31 + ALL pour tous les jours mon : 1-12 (janvier à décembre) + ALL pour tous les mois year : n°année + ALL pour tous les ans
  • /
function activeCron($cron){ $active = false; $now = getdate(); $h = $now['hours']; $wd = $now['wday']; $md = $now['mday']; $m = $now['mon']; $y = $now['year']; //hours if($cron['hours']=="ALL") $active = true; else if($cron['hours']==$h) $active = true; else return false; //wday if($cron['wday']=="ALL") $active = true; else if($cron['wday']==$wd) $active = true; else return false; //mday if($cron['mday']=="ALL") $active = true; else if($cron['mday']==$md) $active = true; else return false; //mon if($cron['mon']=="ALL") $active = true; else if($cron['mon']==$m) $active = true; else return false; //year if($cron['year']=="ALL") $active = true; else if($cron['year']==$y) $active = true; else return false; return $active; } function runCron($cronName){ call_user_func($cronName); echo "<br/>$cronName"; } function runCrontab($crontab){ foreach($crontab as $cron){ if(activeCron($cron)) runCron($cron['name']); } } runCrontab($crontab); ?>

Conclusion :


Les commentaires sont synthétiques mais si ça peut servir à quelqu'un ...

Je suis ouvert à toutes les remarques.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Salut,
Tu devrais aussi regarder ma source : http://phpcs.com/codes/PHP5-TASKSCHEDULER-PETIT-PLANIFICATEUR-TACHE-PHP_44647.aspx. Je pense qu'il y a du bon à prendre dans nos 2 codes !
++ !
L.S.
Messages postés
5
Date d'inscription
dimanche 18 janvier 2004
Statut
Membre
Dernière intervention
12 novembre 2007

Merci d'avance

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.