Cita:
Iniciado por tralara Si, realmente tiene que ver con la otra pregunta en el sentido que están relacionados con el mismo script aunque este post concretamente está al margen del otro. Te cuento:
Estoy preparando un script con para realizar un mailing, ya tengo el cron preparado para que vaya llamando al script, pero, como tengo dominios de los cuales tengo unas 1000 direcciones, quiero comprobar a que hora se ha enviado el utlimo correo a un dominio concreto y dejar o no enviar el siguiente mail al mismo server, mas que nada para evitar que sea considerado spam.
Entonces como he comprobado que a veces la classe que uso para enviar los mails depende de lo saturado que vaya el server tarda mas o menos segundos en enviar el correo, incluso en procesarse el script hay pequeñas variaciones de tiempo quería darle un tiempo adicional "de seguridad" para que realmente no empiece a colgarse el envío.
Es bueno el enfoque?
mm .. En mi caso para solventar el problema del registro de la actividad de envio de los e-mails lo hago sobre una Base de datos (podría ser un archivo de texto plano) por lo menos para el registro del estado "enviado" o "en proceso de envio".. le doy tiempo de ejecución "tarde lo que tarde" (set_time_limit(0)) al script.
El script de proceso de envio de los e-mails .. lo dejo corriendo pese terminar la conexión del script con:
register_shutdown_function()
Y sólo me dedico a ver el estado de esa BD o archivo de texto plano que es donde voy recogiendo la actividad del script que tengo corriendo en "segundo plano".
Este caso es útil cuando uno "lanza" el proceso manualmente, no corres el peligro de que cierres la "ventana" donde estás enviando tus e-mails (hablo de lanzarlo vía llamada HTTP). En tu caso al usar un cron-job esto no es tan importante .. no obstante es bueno conocer este tipo de funciones.
No he usado cron-job para lanzar otro proceso (en este caso) .. pero usando lo que te propongo .. tu script que lanzas en el cron-job debería ir a consultar a tu BD por si terminó el proceso en curso (ahí gestionas flag's de estado de tus envios ... o almacenas fechas) .. Eso sí, tu cron-job tendrías que definirlo a intervalos .. si ahora no se ejecutó por estar un proceso en curso (conocido previa consulta a tu BD o archivo de texto plano que defina en que fase va del envio) .. lo hará en la próxima ejecución de tu cron-job.
En resumen .. no retardo la ejecución del script sino que dejaría en manos del cron-job la ejecución de los intervalos y gestionar sobre todo "flag's" (banderas, estados) para saber si está en curso un envio o no de esos e-mails.
Puedes "paginar" tus envios para enviar en tandas de N e-mails por tiempo ... (creo que algunos scripts de gestión de listas de correo lo hacen así ya).
Un saludo,