Question

Je développe un site Web qui récupérera les messages SMS envoyés à une passerelle. La passerelle est accessible via une API, avec les requêtes au format suivant:

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

Notez que je dois suivre la dernière fois que des messages ont été téléchargés. Seuls les messages reçus après cette heure sont renvoyés.

Le problème est qu’il ya une différence de temps d’environ 5 minutes entre les serveurs! Voici ce qui se passe:

- > L'utilisateur envoie un SMS; le serveur de passerelle l’a horodaté à 11h00 (par exemple, il est 10h55)

- > Mon serveur demande tous les messages envoyés à partir de 10.56 - reçoit le message ci-dessus et l'ajoute à la base de données

- > Mon serveur demande tous les messages envoyés à partir de 10.58 - reçoit le message ci-dessus et l'ajoute à nouveau, car l'horodatage est fixé à 11h00

- > Mon serveur envoie une autre demande à 11 heures - reçoit le message et l'ajoute une fois de plus à la base de données

Mon problème est donc que le message d'origine est reçu 3 fois.

La modification de l'heure de mon serveur est faisable, mais pas les serveurs distants.

Comment puis-je gérer cela sans vérifier si le message est déjà dans la base de données?

Était-ce utile?

La solution

Lorsque vous recevez les messages envoyés à partir de 10.56, vérifiez l'heure du dernier message: Dites 11:00 a.m, alors Le prochain appel n’est envoyé qu’à 11h00 car vous avez déjà reçu jusqu’à 11h00 du serveur. De cette façon, vous pouvez réduire vos sondages. Même cela fonctionnera lorsque le temps du serveur sera inversé.

ie) Vérifier l'heure du dernier message:

dans le prochain sondage, vérifiez l'heure du dernier message.

Autres conseils

Votre configuration de base est délicate. Même si vous synchronisez les horloges des deux serveurs, vous perdrez ou doublez les messages partageant des horodatages (qui peuvent être nombreux ou très différents en fonction de la résolution de l’horodatage et du trafic de messages).

Vous aurez besoin d'une API différente pour accéder aux messages ou de demander les messages qui se chevauchent en demandant des messages depuis latest_processed_timestamp - 1 et de trier les doublons de votre côté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top