PHP - Como puedo evitar el envió de email si ya se envió anteriormente

 
Vista:
sin imagen de perfil
Val: 54
Ha aumentado su posición en 38 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como puedo evitar el envió de email si ya se envió anteriormente

Publicado por Carlos (26 intervenciones) el 18/03/2021 23:31:21
Hola tengo un script que me envía un email si llueve.
Como puedo hacer para que no me vuelva a enviar el email si ya fue enviado por ejemplo cada cierto tiempo ejemplo 8 horas

EL valor para probarlo puede ser así
1
2
3
4
5
6
7
8
9
10
11
12
13
$lluvia = 0.1
 
    if ($lluvia >= 0.1 )
    {
  //mail($to, "Script Esta lloviendo");
		mail($to, "Esta lloviendo");
 
    } else{
 
        $llueve="<br><br>No esta lloviendo<br><br><br>";
    }
 
   ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como puedo evitar el envió de email si ya se envió anteriormente

Publicado por joel (1269 intervenciones) el 19/03/2021 08:13:38
Viendo solamente esta parte del código yo te diría que no es posible, ya que cada vez que llegue a ese punto el valor de $lluvia tiene un valor igual a 0.1, por lo que se enviara nuevamente el correo.
No se en que contexto esta ese código... esta dentro de un bucle?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Como puedo evitar el envió de email si ya se envió anteriormente

Publicado por Mauro (1037 intervenciones) el 19/03/2021 13:30:02
Tal vez podrías guardar un archivo o registro en una base de datos con la fecha del último envío y, antes de realizar uno nuevo validar que sea anterior a la fecha actual
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha aumentado su posición en 38 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como puedo evitar el envió de email si ya se envió anteriormente

Publicado por Carlos (26 intervenciones) el 19/03/2021 17:12:41
Hola gracias por las respuestas, el script que me hicieron tiene una cache que actualmente indica la fecha, hora y campo lluvia
Ejemplo linea fichero cache
19-03-2021 17:06:57,0.3

Si lo ejecuto en cron cada 5 minutos me envia un email cad 5 minutos
Es posible escribiendo en el fichero cache la fecha del envio ultimo y que cuando se ejecute de nuevo obtenga ese datos y si no ha pasado x tiempo no haga el envio

Actualmente si el vaor es superior a 0.1 envia el email, si es superior a 0.4 cancela el script. La pega es que si chispea o llovizna mucho puede pegarse para llegar a 0.4 horas.
Ahi otro valor que puede utilizarse que es intensidad de lluvia caida
el código completo es:
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
<?php
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
header("Content-Type: text/html;charset=utf-8");
date_default_timezone_set("Europe/Madrid");       // Zones available at http://us2.php.net/manual/en/timezones.php
///////////Configuracion/////////////////////
$realtimefile = '/var/www/html/webtest/realtime.txt';
$realtimecachefile = '/var/www/html/webtest/llueve.txt';
//$lluvia = $realtime[9]; // lluvia caida
$lluvia = 0.0;
$to = 'mi@gmail.com';
$from = 'ALERTA';
$test = false; //true, probar correo. false, no probar
$lloviendo= '   Si llueve  ';
/////////////////////////////////////////////
 
if ($test) {mail($to, "Prueba test manual", ''); exit;}
 
$realtime = explode(' ', file_get_contents($realtimefile));
$fecha = explode('/', $realtime[0]);
$fechar = $fecha[0].'-'.$fecha[1].'-20'.$fecha[2].' '.$realtime[1];
 
if (!file_exists($realtimecachefile)) file_put_contents($realtimecachefile, $fechar.','.$lluvia);
if (date('H:i') == "00:00") file_put_contents($realtimecachefile, $fechar.',0.0');
 
$fecha = strtotime($fechar);
$realtimecache = explode(',', file_get_contents($realtimecachefile));
$fechacache = strtotime($realtimecache[0]);
$lluviacache = $realtimecache[1];
$diff = $fecha - $fechacache;
 
$difflluvia = $lluvia - $lluviacache;
 
if ($lluvia == 0 or $difflluvia == 0); echo "Script ejecutado el,  $fechar";
 
file_put_contents($realtimecachefile, $fechar.','.$lluvia);
 
 
 if ($lluvia >= 0.4) exit; // Si la intensidad de agua es superior a 0.4 se sale del script
    if ($lluvia >= 0.1 ) // Si la intensidad de agua es superior a 0.1 envia email
    {
 
		mail($to, "Esta lloviendo", date( ""), 'From: ' . $from);
echo $lloviendo;
    } else{
 
        $llueve="<br><br>No esta lloviendo<br><br><br>";
    }
       echo "&nbsp;&nbsp;&nbsp;&nbsp;",$lluvia;
   ?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar