我正在开发一个网站,它将检索已发送到网关的SMS消息。通过API访问网关,请求采用以下格式:

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

请注意,我必须跟踪上次下载邮件的时间 - 只返回在此时间之后收到的邮件。

问题是服务器之间的时差约为5分钟!这是正在发生的事情:

- >用户发送短信;网关服务器时间戳记在上午11点(假设实际时间是10.55am)

- >我的服务器请求从10.56开始发送的所有邮件 - 收到上述邮件并将其添加到数据库

- >我的服务器请求从10.58开始发送的所有邮件 - 收到上述邮件并再次添加,因为它的时间戳是上午11点

- >我的服务器在11.00发送另一个请求 - 接收消息并再次将其添加到数据库

所以我的问题是原始邮件正在被收到3次。

更改服务器的时间是可行的,但不是远程服务器。

如何在不检查邮件是否已存在于数据库中的情况下处理此问题?

有帮助吗?

解决方案

当您收到从10.56开始发送的消息时,请检查上一个消息时间: 说早上11点,然后 下次通话仅在上午11点发送,因为您已经收到服务器时间的上午11点。 这样你可以减少你的民意调查。 即使这将适用于服务器的时间处于相反的情况。

ie)检查最后一条消息的时间:

在上次留言的下一次轮询检查中。

其他提示

您的基本设置非常有用,即使您将两台服务器的时钟保持同步,您也会在共享时间戳的消息上丢失或加倍(根据时间戳分辨率和消息流量,这些消息可能很多或很少)。

您将需要一个不同的API来访问消息,或者您必须通过请求消息来请求重叠消息,因为 latest_processed_timestamp - 1 并对您的副本进行排序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top