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 ?
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); } }
Partager