Fonction périodique d'exécution d'un script
Bonjour,
J'avais besoin de faire une fonction me permettant d'exécuter certains scripts selon un planning assez simple.
2 paramètres d'exécution :
- le jour de la semaine de 0 à 6
- la périodicité de traitement 1 = quotidien, 7 = hebdomadaire, 14 = quinzaine, 28 = mensuel
et "echo "<br>".date("Y-m-d");" étant remplacé par l'appel du script attendu.
J'ai donc fait la fonction ci-après, mais y aurait-il eu une autre façon de faire ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| function trtPeriodique($periodicite = 28, $jour_de_la_semaine = 0)
{
// On prend le 1er jour du mois
$jour = 1;
$mois = date("m");
$annee = date("Y");
// On recherche quel jour de la semaine c'est
$premier_jour_mois = date("w", mktime (0,0,0,$mois,$jour,$annee));
// On recherche l'écart qu'il y a entre le n° dans la semaine du jour du 1er du mois et le n° de jour recherché
$ecart_jour = $jour_de_la_semaine - $premier_jour_mois;
// On ajoute l'écart qui sépare les n° du jour dans la semaine en ajoutant 1 (le dimanche étant le 0)
if($ecart_jour > 0) $jour_traitement = $jour + $ecart_jour;
else if($ecart_jour < 0)
{
$jour_traitement = $jour + 7 - 1;
}
else $jour_traitement = $jour;
// Calcul de la date de 1er traitement
if($jour_traitement < 10) $jour_traitement = "0".$jour_traitement;
$date_premier_traitement = $annee."-".$mois."-".$jour_traitement;
// Sommes nous le jour de 1er traitement ?
// Date valable pour toutes les périodicités
if($date_premier_traitement == date("Y-m-d"))
{
echo "<br>".date("Y-m-d");
}
// Calcul des autres dates de traitement en fonction de la périodicité
// bi-mensuel
if($periodicite == 14)
{
$jour_traitement = $jour_traitement + $periodicite;
$date_traitement_suivant = $annee."-".$mois."-".$jour_traitement;
if($date_traitement_suivant == date("Y-m-d"))
{
echo "<br>".date("Y-m-d");
}
}
// Hebdomadaire
if($periodicite == 7)
{
if($jour_de_la_semaine == date("w"))
{
echo "<br>".date("Y-m-d");
}
}
// Quotidien
if($periodicite == 1 && $date_premier_traitement != date("Y-m-d"))
{
echo "<br>".date("Y-m-d");
}
} |
Merci d'avance