Foros del Web » Programando para Internet » PHP »

Duda sobre horas,cron y php.

Estas en el tema de Duda sobre horas,cron y php. en el foro de PHP en Foros del Web. Tengo una duda sobre un tema que me estoy liando es solo una idea que tengo en mente y que aún tengo dudas y me ...
  #1 (permalink)  
Antiguo 12/12/2014, 10:01
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Duda sobre horas,cron y php.

Tengo una duda sobre un tema que me estoy liando es solo una idea que tengo en mente y que aún tengo dudas y me guaría si alguna alma caritativa me pudiese ayudar.

Voy a colocar un ejemplo bastante simple, sin código ya que no hace falta para la duda ya que el problema no es el funcionamiento del script.

Tenemos un a tabla de 2 registro pero podrían ser de registros variables, pongo dos para hacer el ejemplo:

ID usuario HORA INICIO HORA ENVIO FECHA
1 [email protected] 12:00 14:00 2/10/2014
2 [email protected] 9:03 11:03 2/10/2014


Cada usuario tendría un botón para hacer click y según la hora de hacer el click se calcula dos horas después de hacer click y guarda la hora de hacer clik (HORA INICIO) y dos horas después (Hora envió).

Bueno ahora tenemos un script que se ejecuta con cron cada media hora, este script compara la HORA ENVIO de la tabla con la hora actual y si en el bucle algún usuario tiene coincidencia de HORA DE ENVIO CON HORA ACTUAL le envía un mail. Resumiendo cada dos horas,después de hacer click, se enviaría un mail a la dirección indicada.

Tengo que destacar que me parece mas acertado poner en el script la condición de si es igual o mayor de dos hora se envié. Por otra parte también quería comentar que la fecha esta para seleccionar los registros por día y no volver a enviar los de los días anteriores.


La gran duda que tengo es que si algún registro cumple con la condición, de que pasa dos horas, pero el script no se ha ejecutado con cron. No se enviaría y aún que por si acaso el script tarda bastante en ejecutarse o pasa lo anterior comentado pondría que se ejecute si son dos horas o mayor de dos horas.Pero mi intención es que se ejecute cada dos horas.


Por ejemplo este caso:

2 [email protected] 9:03 11:03 2/10/2014

Como se puede observar abajo el script de ejecutaría a las 11:00 y 11:30 y dado que
el email se debería de enviar a las 11:03 no se enviaría.

El script de cron se ejecutaría cada media hora:
Primera ejecución 9:00
Segunda ejecución 9:30
Tercera ejecución 10:00
cuarta ejecución 11:30
quinta ejecución 12:00
...

Una solución seria estar ejecutando el script cada minuto pero un colega me comento lo que yo también me temía que son muchas consultas cada minuto.


Alguna idea, muchas gracias
  #2 (permalink)  
Antiguo 12/12/2014, 10:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda sobre horas,cron y php.

¿1 consulta por minuto es mucho?

Con 1 consulta a la bbdd, sabrás si hay o no hay pendientes de envio...

Sino, tb puedes hacer el cron cada 5 minutos.... ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 12/12/2014, 11:08
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Duda sobre horas,cron y php.

Hola Eleazan, ten en cuenta que podría llegar el caso de tener en esa consulta 50.000 registros y eso por minuto el servidor lo petas, ya pregunte a un amigo por si acaso y me comento una solución.

El caso estaría que una vez que guardar calcular la hora de envio y guardarla en un archivo.txt con la fecha y luego cada minuto comprobar la hora de envío de cada linea.

Mi duda estaría también en que si con sqlite seria mejor o igual, ya que hay que tener en cuenta la esca-labilidad por lo que aunque borre los registro que ya se envió puede llegar a tener por ejemplo 100.000 registros y 50.000 envíos a la vez.
  #4 (permalink)  
Antiguo 15/12/2014, 03:55
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda sobre horas,cron y php.

Si los indices están correctos, no deberia consumir practicamente nada esa comsulta.

De todas formas, como consejo... primero hazlo, y cuando el sitio crezca (imagino que no tienes esos 50.000 registros!) optimizas.

Igualmente, otra opción es tener una tabla de los "envios pendientes", y otra de los realizados. Así no tendrás tantos registros, no? ;)

PD: Tu "cuello de botella" no está en la consulta, más bien en enviar el mail ;). De todas formas, puedes mirar SQL_CACHE, o similares
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: fecha, registro, tabla, variable
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 17:43.