0

我正在建立拍卖网站,我正在使用Keith Wood的 jQuery 倒计时来显示拍卖的结束时间。我需要为我的所有客户与服务器同步倒计时时间。到目前为止,我已经用serverSync函数实现了 jQuery 倒计时。它工作正常,但是当几秒钟过去后,倒计时滞后 1 或 2 秒。 如果可能的话,我怎样才能完美地同步所有客户的时间?

更新:我还在轮询(500 毫秒间隔)php 文件,它更新所有拍卖(实时效果),在这段代码中,我还从数据库中回显了新的“轮询”倒计时(因为当用户在拍卖的最后 10 秒内出价时,倒计时增加 + 10 秒)。所以我认为这是问题所在,因为在客户端,并非每次轮询都同时开始,这取决于客户端何时刷新页面等等,它会影响倒计时。基本上每 500 毫秒我在 poll.php 中调用一次(它会更新数据库中的倒计时):

var syncDate = new Date("'.$formatEndDate.'");  
jq("#defaultCountdown-'.$bidded_id.'").countdown("option", {until: syncDate, serverSync: serverTime});

到目前为止,我的代码滞后 1 或 2 秒:

$(function () {
   var d = new Date("'.$endingDate.'");             
   $('#defaultCountdown').countdown({until: d,  onExpiry: endAuction, 
     expiryText: '<div class="bid-over">Ended</div>', format: 'HMS', 
     onTick: watchCountdown, serverSync: serverTime });
});

function serverTime() {
var time = null;
var url = "serverTime.php";
jq.ajax({
    url: url,
    async: false,
    dataType: "text",
    success: function (text) {
        time = new Date(text);
    },
    error: function (http, message, exc) {
        time = new Date();

    }
});
return time;
}

serverTime.php:

<?php
//This is how I get server time
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Fri, 1 Jan 2010 00:00:00 GMT"); // Date in the past 
header("Content-Type: text/plain; charset=utf-8"); // MIME type 
date_default_timezone_set('Europe/Ljubljana');
$srvDate = getdate();
$d = $srvDate['mday'];
$m = $srvDate['mon'];
$y = $srvDate['year'];
$h = $srvDate['hours'];
$i = $srvDate['minutes'];
$s = $srvDate['seconds'];
$nowDate=date("$y-$m-$d $h:$i:$s");
$nowDate=str_replace("-","/",$nowDate);
echo $nowDate;
?>
4

0 回答 0