クライアントクロックとサーバークロックの違いを調べる方法を見つけました。クライアントデバイスのクロックとサーバークロックを正確に比較(ミリ秒単位)
これまで私は以下のアプローチを試みました。
収集:
- クライアント要求時間
- サーバー時間
- クライアントの応答時間
問題は、我々はクライアントに到達するために、サーバーと応答に到達するために、要求間の未知の遅延を得ることです。ここで
はJavaScriptとPHPを使用して、このスキームの実装です:
time.js
var request = new XMLHttpRequest();
request.onreadystatechange = readystatechangehandler;
request.open("POST", "http://www.example.com/sync.php", true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send("original=" + (new Date).getTime());
function readystatechangehandler() {
var returned = (new Date).getTime();
if (request.readyState === 4 && request.status === 200) {
var timestamp = request.responseText.split('|');
var original = + timestamp[0];
var receive = + timestamp[1];
var transmit = + timestamp[2];
var sending = receive - original;
var receiving = returned - transmit;
var roundtrip = sending + receiving;
var oneway = roundtrip/2;
var difference = sending - oneway; // this is what you want
// so the server time will be client time + difference
}
}
Sync.php
<?php
$receive = round(microtime(true) * 1000);
echo $_POST["original"] . '|';
echo $receive . '|';
echo round(microtime(true) * 1000);
?>
でもこのアプローチでは、私は50から500ミリ秒のエラーを取得します。遅延が大きい場合、エラーはより多くなります。
しかし、「adtruth」という名前の会社が時計の時間に基づいてデバイスを区別できるとはどういうことかと思います。彼らはそれを「時差リンク」と呼びます。 デバイス認識の鍵AdTruth形式は、TDLと呼ばれる特許取得済みの技術です。何十億もの接続デバイスが同じ構成で数千もあるかもしれませんが、少なくとも2つのデバイスが同じ時間に設定されているわけではありません - 少なくとも、ミリ秒に減らしたときではありません。 41番目のパラメータとAdTruthの創設者Ori Eisenは、「これらの異なるタイムスタンプをサーバのマスタークロックと比較します。疑問がある場合、TDLはタイブレーカーです」と述べています。ここで
http://www.admonsters.com/blog/adtruth-joins-w3c-qa-ori-eisen-founder-and-chief-innovation-officer
はそれは、彼らは単に彼らの説明ではネットワーク遅延の問題を無視することのように見える彼らの「時間差のリンク」特許http://www.google.com/patents/US7853533
私はその時点でこの答えを完全に無視しました。本当にそれは多くの意味があります。 +1 –