Frage

Ich entwickle eine Website, die SMS-Nachrichten abruft, die an ein Gateway gesendet wurden. Das Gateway ist über eine API zugegriffen wird, mit den Anfragen in folgendem Format:

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

Beachten Sie, dass ich das letzte Mal zu verfolgen habe Nachrichten heruntergeladen wurden -. Nachrichten nur nach dieser Zeit empfangen werden zurückgegeben

Das Problem ist, dass es zwischen den Servern eine Zeitdifferenz von etwa 5 Minuten ist! Hier ist, was passiert:

-> Benutzer sendet SMS; Gateway-Server es um 11.00 Uhr Zeitstempel (sagen wir mal tatsächliche Zeit ist 10.55 Uhr)

-> Mein Server fordert alle Mitteilungen 10,56 ab gesendet - erhält die obige Nachricht und fügt sie in der Datenbank

-> Mein Server fordert alle Mitteilungen 10,58 ab gesendet - erhält die obige Nachricht und fügt sie wieder, da es um 11.00 Uhr timestamped

-> Mein Server sendet eine weitere Anforderung, um 11.00 Uhr - empfängt die Nachricht und fügt sie in die Datenbank wieder

Also mein Problem ist, dass die eine ursprüngliche Nachricht 3 Mal empfangen wird.

Ändern Zeit meines Servers ist machbar, aber nicht die Remote-Servern.

Wie kann ich damit umgehen, ohne zu überprüfen, um zu sehen, ob die Nachricht bereits in der Datenbank?

War es hilfreich?

Lösung

Wenn Sie die Nachrichten von 10.56 ab gesendet erhalten, prüfen Sie die letzte Nachricht Zeit: Sprich 11.00 a.m, dann nur nächster Anruf nur um 11:00 Uhr a.m senden, weil Sie bereits bis 11.00 Uhr a.m der Server-Zeit erhalten hatten. Auf diese Weise können Sie Ihre Umfragen reduzieren. Auch wird dies für Arbeit, wenn Server Zeit in dem umgekehrten Zustand ist.

ie) Überprüfen Sie für letzte Nachricht Zeit:

in der nächsten Umfrage Check von den letzten Nachricht Zeit.

Andere Tipps

Ihre Grundeinstellung ist rassig, auch wenn Sie die beiden Server Uhren synchron zu halten, werden Sie entweder verlieren oder auf Nachrichten verdoppeln, die Zeitstempel teilen (die viele oder wenig abhängig von Zeitstempel-Auflösung und Nachrichtenverkehr sein können).

Sie müssen entweder eine andere API für die Nachrichten zugreifen oder Sie haben zu fordern Nachrichten überlappende von Nachrichten seit latest_processed_timestamp - 1 und sortieren die Duplikate auf Ihrer Seite anzufordern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top