bonjour,
j ai utiliser le tuto : http://matthieu.developpez.com/execution_periodique

car je v ai executer un script pour envoyer a mes annonceur un email automatique quand la date de leur fin de compte approche:
j ai creer la page Email_auto.php:

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
set_time_limit(0);/*permet au script de s'éxécuter indéfiniment */
ignore_user_abort(1);//La fermeture du navigateur peut être ignorée par
 
function fini()
{
	fopen('./ERREUR', 'w');
}
 
register_shutdown_function(fini());
 
while(1)
{
	if file_exists('STOP') { die("script arrêté. Effacez le fichier STOP avant de reprendre") }
 
	$next = getNextExecutionTime();			/* on récupère l'heure (timestamp) de la prochaine éxécution */
	$indexScript = getNextExecutionScript();	/* on récupère le numéro du prochain script à éxécuter */
	$dodo = $next - time();				/* le temps en seconde qu'il faut pour arriver à $next */
	sleep($dodo);					/* on dort jusqu'à ce qu'il soit temps d'éxécuter le script */
	fopen($scripts[$indexScript]['EmailAutomatique.php'], 'r') /* on lance le script. */
							/* fopen peut être remplacé par une autre méthode, (shell_exec...) */
	$scripts[$indexScript]['prochain'] = setNextExecutionTimeForScript($indexScript); /* prochaine éxécution */ 
}
function getNextExecutionScript()
{
	global $scripts;
 
	foreach($scripts as $index => $script)
	{
		if($script['prochain'] < $min || !(isset($min)))
		{
			$min = $script['prochain'];
			$minIndex = $index;
		}
	}
	return $minIndex;
}
function setNextExecutionTimeForScript($indexScript)
{ 
	global  $scripts, $a, $m, $j, $h, $min;
 
	$aNow = date("Y");
	$mNow = date("m");
	$jNow = date("d");
	$hNow = date("H");
	$minNow = date("i")+1;
 
	$a = $aNow;
	$m = $mNow - 1;
 
	while(prochainMois($indexScript) != -1)			/* on parcourt tous les mois de l'intervalle demandé */
	{							/* jusqu'à trouver une réponse convanable */
		if ($m != $mNow || $a != $aNow)			/*si ce n'est pas ce mois ci */
		{
			$j = 0;
			if (prochainJour($indexScript) == -1)	/* le premier jour trouvé sera le bon. */
			{					/*  -1 si l'intersection entre jour de semaine */
								/* et jour du mois est nulle */
				continue;			/* ...auquel cas on passe au mois suivant */
			}else{					/* s'il y a un jour */
				$h=-1;
				prochainHeure($indexScript);	/* la première heure et la première minute conviendront*/
				$min = -1;
				prochainMinute($indexScript);
				return mktime($h, $min, 0, $m, $j, $a);
			}
		}else{						/* c'est ce mois ci */
			$j = $jNow-1;					
			while(prochainJour($indexScript) != -1)	/* on cherche un jour à partir d'aujourd'hui compris */
			{
				if ($j > $jNow)			/* si ce n'est pas aujourd'hui */
				{				/* on prend les premiers résultats */
					$h=-1;
					prochainHeure($indexScript);
					$min = -1;
					prochainMinute($indexScript);
					return mktime($h, $min, 0, $m, $j, $a);
				}
				if ($j == $jNow)		/* même algo pour les heures et les minutes */
				{
					$h = $hNow - 1;
					while(prochainHeure($indexScript) != -1)
					{
						if ($h > $hNow)
						{
							$min = -1;
							prochainMinute($indexScript);
							return mktime($h, $min, 0, $m, $j, $a);
						}
						if ($h == $hNow)
						{
							$min = $minNow - 1;
							while(prochainMinute($indexScript) != -1)
							{
								if ($min > $minNow) { return mktime($h, $min, 0, $m, $j, $a); }
 
								/* si c'est maintenant, on l'éxécute directement */
								if ($min == $minNow)
								{
									fopen($scripts[$indexScript]['URLScript'], 'r');
								}
							}
						}						
					}
				}
			}
		}
	}
}
?>
page qui fait appell le script:
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
 
<?php
include("include/session.php");
$liste_annonce= ('SELECT * FROM annonce');
 
$anonce	=  mysql_query($liste_annonce) or die('Erreur SQL !'.$liste_annonce.'<br>'.mysql_error());
 
while($date = mysql_fetch_assoc($annonce))
{
	$date_Email=$date['date']+20 ;
	$date_now=date("d m Y");
 
	if($date_Email==$date_now)
	{
		echo 1;
 
		$q = mysql_query("SELECT * FROM annonce,pro,annonceur where 
annonce.num_annonceur=pro.ref_pro
and annonceur.num_annonceur=pro.ref_pro"); // requete
		$compteur=1; // variable pour compter les mails
		while ($r = mysql_fetch_array($q)) { 
			if($q["type_annonceur"]==1)
			{
				$e_mail = $r['email_pro']; //prend l'email de la table
			}
			else
			{ 
				$e_mail = $r['email']; //prend l'email de la table}
			}
			// 1 exemple de contenu du mail
			$contenu = 'Bonjour! <br />Email : '.$e_mail.'<br /><br />';
			$contenu .= 'Votre annonce arrive a expiration  le '.$q["date_expiration"].' <br />';
 
			$contenu .= 'Au revoir <br /><br />';
 
			// envoi du mail HTML
			$from = "From: hello <www.idealeparution.fr>\nMime-Version:";
			$from .= " 1.0\nContent-Type: text/html; charset=ISO-8859-1\n";
			// envoie du mail
			mail($e_mail,$titre,$contenu,$from);
 
 
			$compteur++; // ajoute 1 à la variale du compteur
		}  // fin du while 
 
		// On se déconnecte de MySQL
		mysql_close();
 
 
	}
	?>
pouvez vous m aider car je n ai aucun mail envoyer alors que j ai remlacer par ca aucun mail envoyer. $date_Email=$date['date'];