Foro Black Hat SEO

Versión completa: excederé el tiempo de ejecucion?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola chicos
tengo una aplicacion (esta desarrollada en codeigniter, pero creo que eso dará igual para mi duda) en la cual hay un numero bastante alto de datos que tienen fecha de caducidad (es una intranet para un grupo de empresas donde , entre otras cosas, se crean fichas de maquinarias que tiene que revisarse cada x tiempo).

Necesito enviar un email automatizado de aviso cuando una de esas fechas este llegando. Por cada elementos que caduca de cada usuario: 1 email.

Mi idea es poner un cron que se ejecute todos los dias y compruebe las fechas en la base de datos (y las preferencias de usuario acerca de cada cuanto se envia dicho email) y envie los emails si procede. Pero me da miedo que si hay muuuuuuuuuchos registros a comprobar (que los habrá) pueda exceder el tiempo de ejecucion (no sería la primera vez que me pasa).

Alguien tiene experiencia con esto y me puede dar algun consejo?

Gracias
Una idea en el cron, en lugar de una vez al día que se ejecute varias veces al día y mire si le queda trabajo pendiente de enviar avisos, por lo que necesitas una tabla donde vas guardando los envíos que se han realizado correctamente, si no le dio tiempo a completar todos que continué la tarea por donde se quedó Sonrisa
sip, creo que será una buena solucion, ademas de todos modos tengo que tener una tabla para saber si ya se envio alguna notificacion (para no mandarla todos los dias) por lo que podria darle tambien ese uso. gracias nico Sonrisa
También puedes agregar una columna LASTCHECK con el timestamp del último chequeo de cada producto. So, a la hora de revisar (que es bueno que sea cada 3 o 4 horas al día) se haga un "select * from productos WHERE LASTCHECK<(time stam actual - las horas que considere, en segundos claro) ORDER BY LASTCHECK ASC".

Lo de ordenarlo es para asegurarnos que queden arriba los que llevan más tiempo sin ser revisados. Así si el script se detiene a media ejecución podrá terminar en la próxima pasada.

Haciéndolo así puede hasta chequear cada hora y no creo que haya mucho consumo.

Suelte con eso Silvia, espero haberme dado a entender xD
Iba a proponer una solución similar a la propuesta por @hvsombrilla
Con un campo del tipo "last checked" y el sql que solo muestre aquellos donde el last checked < fecha()-2 (por el tema de fines de semana), o el tiempo que quieras que pase entre aviso y aviso, para que así el resultado de la consulta sea más pequeño, el loop no tendrá que recorrer todos los registros de la tabla, sino solo los que cumplan con este criterio.