Foros del Web » Programando para Internet » PHP »

Recargar script php ejecutado con cron

Estas en el tema de Recargar script php ejecutado con cron en el foro de PHP en Foros del Web. Buenos días, veréis, necesito una ayuda con un script que estoy creando. Este script se encarga de enviar los correos a los suscriptores de mi ...
  #1 (permalink)  
Antiguo 14/03/2012, 03:35
 
Fecha de Ingreso: junio-2010
Mensajes: 15
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Recargar script php ejecutado con cron

Buenos días, veréis, necesito una ayuda con un script que estoy creando. Este script se encarga de enviar los correos a los suscriptores de mi web y se ejecutaría desde un cron a las 12 de la noche.

Básicamente, lo que hace el script es obtener los datos de los suscriptores de la base de datos, los correos que hay que enviar, y envía 6 correos cada 2 minutos. Esto se hace porque mi hosting tiene unas restricciones de correo como 200 correos/hora y 25 correos/cada 2 minutos, por lo que las cuentas me salen 6 correos cada 2 minutos para no bloquear el servidor o que me eliminen los correos.

El problema es que actualmente tengo 1011 suscriptores, por lo que tardaría un buen rato el script y no se si al ejecutarlo tanto tiempo esto afectaría a la variable max_execution_time de php.

Lo que me gustaría, es si alguien sabe alguna forma de recargar un script ejecutado desde cron sin la intervención de un navegador. Ya se que para recargar un script se usa Header:location o javascript, pero para usar estas formas, es necesaria la intervención de un navegador, y en mi caso, no hay intervención del nacegador, si no que el script lo ejecuta el cron.

Sería interesante, porque de esa manera, cada 2 minutos, el script se llamaría asi mismo, pasando los nuevos parametros por GET, y al recargarse liberaría los recursos.

¿Alguien podría ayudarme?
  #2 (permalink)  
Antiguo 14/03/2012, 03:53
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Recargar script php ejecutado con cron

http://de2.php.net/manual/es/function.sleep.php
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 14/03/2012, 04:16
 
Fecha de Ingreso: junio-2010
Mensajes: 15
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Recargar script php ejecutado con cron

El script ya utiliza la función sleep, pero el problema es que dicha función consume recursos del script, es decir, hace que el script continúe en ejecución, por ello no se si afecta a la directiva max_execution_time de php.

Lo que me interesaría es como poder hacer que un script se recargue así mismo cuando es ejecutado desde cron, sin intervención del navegador, y envíe parámetros mediante GET, ya que de esta manera cada vez que se ejecute así mismo, liberaría los recursos que tenia hasta el momento.
  #4 (permalink)  
Antiguo 14/03/2012, 04:38
Avatar de raulo79  
Fecha de Ingreso: marzo-2012
Ubicación: España
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Recargar script php ejecutado con cron

Una idea, podría ser lanzar un header location de esta manera:

<?php
.............tu script..................


header('Location: http://www.tudominio.com/tuscript.php?tuparametro=tuvalor');
die();

?>

y desde el cron, lanzar un wget a la direccion de tu archivo:

wget -q –delete-after http://www.tudominio.com/tuscript.php?tuparametro=tuvalor

Espero te sirva.

Un saludo.
  #5 (permalink)  
Antiguo 14/03/2012, 04:55
 
Fecha de Ingreso: junio-2010
Mensajes: 15
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Recargar script php ejecutado con cron

Y como lanzo el wget desde el cron? El header:location surtiría efecto usando ese comando de linux?
  #6 (permalink)  
Antiguo 14/03/2012, 05:19
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Recargar script php ejecutado con cron

Yo haría lo siguiente:

· Script autoejecutado por cron cada 2 min (llamemosle A.php)
· Una cola de correos a enviar en una tabla SQL
· Script que se ejecuta a las 12 de la noche, y te llena esa "cola" (llamemosle B.php)

La cosa sería una tabla en plan
id | email | correo_a_enviar

Que el script B.php te rellene esa tabla con todos tus correos, pensando en la forma de enviarlos. Recuerda q este script se ejecuta 1 vez al dia.

Luego, el script A, que se ejecuta cada 2 minutos, obtiene 6 (por ejemplo) registros de esa tabla, y los envia, los borra, y termina su ejecución.

Así, tendrías un script q se ejecuta cada 2 min (mediante cron), que si encuentra registros en la tabla, los envia

Otro q se ejecuta cada dia, y rellena la tabla de tareas.

¿Carga del proceso? Poca. Piensa que A.php deberia ejecutarse en "practicamente nada", ya que el procesado de datos, etc, deberia hacerlo B.php (una vez al dia).

Así es como lo solucionaria yo :)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 14/03/2012, 08:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Recargar script php ejecutado con cron

Concuerdo con Eleazan me parece la solucion mas eficiente.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #8 (permalink)  
Antiguo 14/03/2012, 13:17
 
Fecha de Ingreso: junio-2010
Mensajes: 15
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Recargar script php ejecutado con cron

No lo había planteado de esa manera, pero creo que es la solución que consume menos recursos, así que voy a probarlo.

Muchas gracias a todos !

Etiquetas: correo, cron, servidor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.