Sunucu zamanlarda Farkı

2 Cevap php

Ben bir ağ geçidine gönderilen SMS mesajlarınızı alacaktır bir web sitesi geliştiriyorum. Geçidi aşağıdaki biçimde istekleri ile, bir API üzerinden erişilir:

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

O zaman iade edilir sonra alınan tek mesajları - Ben mesajları indirilen son kez izlemek için yaşıyorum dikkat edin.

Sorun sunucuları arasında yaklaşık 5 dakikalık bir zaman farkı var olduğunu! Buradaki budur:

-> Kullanıcı SMS gönderir; gateway sunucu 11:00 adresinden damgaları (gerçek zamanlı 10:55 diyelim)

-> Benim sunucu itibaren 10,56 gönderilen tüm iletileri istekleri - Yukarıdaki mesajı alır ve veritabanına ekler

-> Benim sunucu itibaren 10,58 gönderilen tüm iletileri istekleri - Yukarıdaki mesajı alır ve 11:00 de timestamped olduğundan, tekrar ekler

-> Benim sunucu saat 11.00 'de bir başka isteği gönderir - mesajı alır ve bir kez daha veritabanına ekler

Yani benim sorunum bir orijinal mesajı 3 kez alınıyor olmasıdır.

Benim sunucunun saatini değiştirme yapmak mümkün değil, ama uzak sunucular.

Nasıl mesaj veritabanında zaten olup olmadığını görmek için kontrol olmadan bu işleyebilir?

2 Cevap

When you receive the messages sent from 10.56 onwards, Check the last message time: Say 11:00 a.m, Then Next call only send only at 11:00 a.m because you had already received upto 11:00 a.m of server's time. This way you can reduce your polls. Even this will work for when Server's time is in the reverse condition.

yani) son mesajın kez kontrol edin:

Geçen mesajın zaman bir sonraki anket çek.

Sizin temel kurulum size senkronize iki sunucuların saatlerini tutmak bile kaybetmek veya mesajlar kadar iki katına çıkacak ya, müstehcen (çok veya az sayıda damgası çözünürlük ve mesaj trafiğine bağlı olarak olabilir) payının damgaları.

Ya mesajları erişmek için farklı bir API gerekir veya latest_processed_timestamp - 1 beri mesajları isteyerek örtüşen mesajları talep ve sizin tarafta çiftleri çözmek zorunda.