Pregunta

Estoy desarrollando un sitio web que recuperará los mensajes SMS que se han enviado a una puerta de enlace. Se accede a la puerta de enlace a través de una API, con las solicitudes en el siguiente formato:

http://www.smsgateway.com/?login=myusername&password=mypassword&lasttime=1236164238

Observe que tengo que rastrear la última vez que se descargaron los mensajes, solo se devuelven los mensajes recibidos después de esa hora.

¡El problema es que hay una diferencia de tiempo de aproximadamente 5 minutos entre los servidores! Esto es lo que está pasando:

- > El usuario envía SMS; el servidor de puerta de enlace lo marca a las 11.00 am (digamos que la hora actual es 10.55 am)

- > Mi servidor solicita todos los mensajes enviados a partir de 10.56 en adelante - recibe el mensaje anterior y lo agrega a la base de datos

- > Mi servidor solicita todos los mensajes enviados a partir de 10.58 en adelante - recibe el mensaje anterior y lo agrega nuevamente, ya que está marcado a las 11.00 am

- > Mi servidor envía otra solicitud a las 11.00 - recibe el mensaje y lo agrega a la base de datos una vez más

Así que mi problema es que el mensaje original se recibe 3 veces.

Se puede cambiar la hora de mi servidor, pero no los servidores remotos.

¿Cómo puedo manejar esto sin verificar si el mensaje ya está en la base de datos?

¿Fue útil?

Solución

Cuando reciba los mensajes enviados a partir de 10.56, verifique la hora del último mensaje: Di las 11:00 a.m, entonces La próxima llamada solo se envía a las 11:00 a.m porque ya había recibido hasta las 11:00 a.m. de la hora del servidor. De esta manera usted puede reducir sus encuestas. Incluso esto funcionará cuando el tiempo del servidor esté en la condición inversa.

ie) Verifique la hora del último mensaje:

en la siguiente verificación de sondeo de la hora del último mensaje.

Otros consejos

Su configuración básica es veraz, incluso si mantiene los relojes de los dos servidores sincronizados, perderá o duplicará los mensajes que comparten marcas de tiempo (que pueden ser muchas o pocas dependiendo de la resolución de la marca de tiempo y el tráfico de mensajes).

Necesitará una API diferente para acceder a los mensajes o tendrá que solicitar mensajes superpuestos al solicitar mensajes desde latest_processed_timestamp - 1 y ordenar los duplicados de su lado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top