Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2015, 09:25
edevep
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 4 meses
Puntos: 0
Exclamación Problema al usar cron y php

Buen dia a todos. Estuve investigando acerca de cron que es para programar tareas automáticas. Se trataba de un modulo de pagos sobre cursos de especialización. El sistema de pago maneja 2 tipos de estados: PENDIENTE Y CANCELADO.

Este pago esta relacionado con una fecha de vencimiento. La condición es que faltando 3 días, se tiene que enviar a 4 correos indicando que ya falta poco para que pague el siguiente modulo y a parte también condicionar si el alumno ha pagado o a cancelado.

Ese procedimiento lo estoy aplicando para el cron job. He creado el archivo php para que ejecute la tarea automática. El problema es que no lo ejecuta para nada el archivo.

Supongamos que hoy es 24 de febrero y tiene que enviar un mensaje de alerta a 4 correos. Faltando 3 días claro.

Esto es lo que realice.

Código PHP:
Ver original
  1. $sqlAlertaPago  = "SELECT pa. * , pc. * FROM pago_alumnos pa, pago_credito pc
  2.                        WHERE pa.id = pc.idpago
  3.                        AND pa.alumno =  '$idunico'
  4.                        AND pc.status = 'PENDIENTE'";
  5.     $rptaAlertaPago = mysql_query($sqlAlertaPago,$cnn) or die(mysql_error());
  6.     $rowAlertaPago  = mysql_fetch_array($rptaAlertaPago);
  7.    
  8.     // Consulto la tabla alumno preguntando a que alumno pertenece
  9.     $sql_alumno  = "SELECT * FROM alumno WHERE id = '$idunico'";
  10.     $rpta_alumno = mysql_query($sql_alumno,$cnn) or die(mysql_error());
  11.     $row_alumno  = mysql_fetch_array($rpta_alumno);
  12.    
  13.     $fechaDB     = '2015-02-24';
  14.     $timeActual  = time();   // Obtenemos el timestamp del momento actual;
  15.     $timeVencimiento = strtotime($fechaDB); // Obtenemos timestamp de la fecha de vencimiento
  16.    
  17.     // Calculamos el número de segundos que tienen esos 3 días
  18.     $segundos = 3 * 24 * 60 * 60;
  19.    
  20.     // Aun no ha caducado pero faltan menos de tres días
  21.     if(($timeActual < $timeVencimiento) AND ($timeVencimiento-$timeActual < $segundos))
  22.     {
  23.         echo "asdasd";
  24.         if($rowAlertaPago['status']=='PENDIENTE')
  25.         {    
  26.             // Va a expirar en menos de 3 días
  27.             // procesar el envio automatico
  28.             $mail             = new PHPMailer(); // defaults to using php "mail()"
  29.             $mail->From       = "$row_alumno[email]";
  30.             $mail->FromName   = "$row_alumno[nombre]";
  31.            
  32.                 $mail->AddAddress("[email protected]", "American Andragogy University");
  33.                 $mail->AddAddress("[email protected]", "American Andragogy University");
  34.                 $mail->AddAddress("[email protected]", "American Andragogy University");
  35.                 $mail->AddAddress("[email protected]", "American Andragogy University");
  36.             $mail->Subject    = "American University - Alerta para el alumno ".$row_alumno['nombre']."";
  37.            
  38.             $msg .= 'Sr. Percy Vieira:<br />';
  39.             $msg .= 'Le recordamos que el alumno '.$row_alumno['nombre'].' '.$row_alumno['apellido'].' tiene una fecha pendiente de pago.<br />';
  40.             $msg .= 'Gracias.';
  41.            
  42.             $mail->MsgHTML($msg);
  43.             $mail->IsHTML(true);
  44.             $mail->Send();
  45.            
  46.         }
  47.         else if($rowAlertaPago['status']=='CANCELADO')
  48.         {    
  49.           // Va a expirar en menos de 3 días
  50.           echo '';
  51.         }
  52.                
  53.     // Aun no ha caducado y faltan más de tres días
  54.     }
  55.     else if(($timeActual < $timeVencimiento) AND ($timeVencimiento-$timeActual > $segundos))
  56.     {
  57.        
  58.         // procesar el envio automatico
  59.         $mail             = new PHPMailer(); // defaults to using php "mail()"
  60.         $mail->From       = "$row_alumno[nombre]";
  61.         $mail->FromName   = "$row_alumno[email]";
  62.        
  63.         $mail->AddAddress("[email protected]", "American Andragogy University");
  64.         $mail->AddAddress("[email protected]", "American Andragogy University");
  65.         $mail->AddAddress("[email protected]", "American Andragogy University");
  66.         $mail->AddAddress("[email protected]", "American Andragogy University");
  67.         $mail->Subject    = "American University - Alerta para el alumno ".$row_alumno['nombre']."";
  68.        
  69.         $msg .= 'Sr. Administrador:<br />';
  70.         $msg .= 'Le recordamos nuevamente que el alumno '.$row_alumno['nombre'].' '.$row_alumno['apellido'].' tiene una fecha pendiente de pago.<br />';
  71.         $msg .= 'Gracias.';
  72.        
  73.         $mail->MsgHTML($msg);
  74.         $mail->IsHTML(true);
  75.         $mail->Send();     
  76.    
  77.     // Ya ha caducado, la fecha de vencimiento es anterior a la fecha actual
  78.     }
  79.     else if($timeActual > $timeVencimiento)
  80.     {
  81.  
  82.         // procesar el envio automatico
  83.         $mail             = new PHPMailer(); // defaults to using php "mail()"
  84.         $mail->From       = "$row_alumno[nombre]";
  85.         $mail->FromName   = "$row_alumno[email]";
  86.        
  87.         $mail->AddAddress("[email protected]", "American Andragogy University");
  88.         $mail->AddAddress("[email protected]", "American Andragogy University");
  89.         $mail->AddAddress("[email protected]", "American Andragogy University");
  90.         $mail->AddAddress("[email protected]", "American Andragogy University");
  91.         $mail->Subject    = "American University - Alerta para el alumno ".$row_alumno['nombre']."";
  92.        
  93.         $msg .= 'Sr. Percy Vieira:<br />';
  94.         $msg .= 'Ya se le vencio la fecha de pago del alumno '.$row_alumno['nombre'].' '.$row_alumno['apellido'].'. Si el alumno ha pagado, omitir este mensaje.<br />';
  95.         $msg .= 'Gracias.';
  96.        
  97.         $mail->MsgHTML($msg);
  98.         $mail->IsHTML(true);
  99.         $mail->Send(); 
  100.    
  101.     // Otra situación
  102.     }
  103.     else
  104.     {
  105.          // Todavía no
  106.         // echo '<div class="mensaje-alerta-2"><p>Ya cancelaste tu cuota.</p></div>';        
  107.     }

Aquí publico el link de la imagen de como esta configurado el cron. Incluyendo el comando que ejecuta el archivo.



Espero que me puedan ayudar con mi problema.

Saludos.

Última edición por edevep; 24/02/2015 a las 09:37 Razón: Correcion del tema.