gpt4 book ai didi

php - 将客户端设备时钟与服务器时钟进行精确到毫秒的比较

转载 作者:可可西里 更新时间:2023-11-01 12:57:49 24 4
gpt4 key购买 nike

我正在寻找一种方法来区分客户端时钟和服务器时钟。

到目前为止,我已经尝试了以下方法。

收集:

  1. 客户端请求时间
  2. 服务器时间
  3. 客户响应时间

问题是我们在请求到达服务器和响应到达客户端之间得到未知的延迟。

下面是使用 JavaScript 和 PHP 实现此方案的方法:

时间.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
}
}

同步.php

<?php
$receive = round(microtime(true) * 1000);
echo $_POST["original"] . '|';
echo $receive . '|';
echo round(microtime(true) * 1000);
?>

即使使用这种方法,我也会遇到 50-500 毫秒的错误。如果延迟高,错误会更多。

但我想知道一家名为“adtruth”的公司如何声称他们能够根据时钟时间区分设备。他们称之为“时间差异链接”AdTruth 式设备识别的关键是其称为 TDL 的专利技术,用于时差链接。虽然在数十亿台联网设备中可能有数千台设备具有相同的配置,但没有两台设备的时钟设置为同一时间——至少,当您将时钟精确到毫秒时不会。41st Parameter 和 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

最佳答案

其实很简单,首先让客户端计算一个固定的时间——2005年1月31日18:34:20.050(以毫秒为单位)。然后计算客户端机器上的时间(当前时间)并计算当前时间和固定时间之间的差值。将客户端时间和增量发送回服务器。在服务器上,从相同的固定时间开始,如果添加相同的增量,服务器当前时间(由于响应时间滞后等原因不再是当前时间)会是多少。客户端当前时间和服务器当前时间之间的差异会给您客户端和服务器之间的时间差。

关于php - 将客户端设备时钟与服务器时钟进行精确到毫秒的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com