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 : 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");
	}
}
Merci d'avance