0

ゲートウェイに送信された SMS メッセージを取得する Web サイトを開発しています。ゲートウェイは、次の形式のリクエストで API 経由でアクセスされます。

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

最後にメッセージがダウンロードされた時刻を追跡する必要があることに注意してください。それ以降に受信したメッセージのみが返されます。

問題は、サーバー間に約 5 分の時差があることです。何が起こっているかは次のとおりです。

->ユーザーが SMS を送信します。ゲートウェイ サーバーは、午前 11 時にタイムスタンプを付けます (実際の時刻は午前 10 時 55 分としましょう)。

->私のサーバーは、10.56 以降に送信されたすべてのメッセージを要求します - 上記のメッセージを受信し、データベースに追加します

-> 私のサーバーは、10.58 以降に送信されたすべてのメッセージを要求します - 上記のメッセージを受信し、再度追加します。

-> 私のサーバーは 11.00 に別のリクエストを送信します - メッセージを受信し、もう一度データベースに追加します

だから私の問題は、1 つの元のメッセージが 3 回受信されていることです。

サーバーの時刻を変更することはできますが、リモート サーバーを変更することはできません。

メッセージが既にデータベースにあるかどうかを確認せずに、これを処理するにはどうすればよいですか?

4

2 に答える 2

3

10.56 以降に送信されたメッセージを受信したら、最後のメッセージ時間を確認します: 午前 11:00 とします。次に、サーバー時間の午前 11:00 までに受信しているため、次の呼び出しは午前 11:00 にのみ送信されます。このようにして、投票を減らすことができます。サーバーの時刻が逆の場合は、これでも機能します。

ie) 最後のメッセージの時間を確認します。

次のポーリングでは、最後のメッセージの時間からチェックします。

于 2009-03-04T11:21:53.437 に答える
1

基本的な設定は際どいものです。2つのサーバーのクロックを同期させたとしても、タイムスタンプを共有するメッセージが失われるか、2倍になります(タイムスタンプの解決とメッセージトラフィックに応じて、多くまたは少なくなる可能性があります)。

メッセージにアクセスするために別のAPIが必要になるか、メッセージをリクエストして重複するメッセージをリクエストする必要がありますlatest_processed_timestamp - 1

于 2009-03-04T11:34:17.293 に答える