同步javascript倒计时与服务器时间


Sync javascript countdown with server time

我会尽力用正确的英语解释我的问题。

我在ajax中有一个全局倒计时,它显示了一个setinterval的剩余时间(与服务器时间计算)。其目的是在剩余时间到达某个目标时只调用函数一次。

$timeLeft = strtotime($wallet->date_upd)- time();
if ($timeLeft <= 3)
{ 
  function() 'this function update or not $wallet->date_upd to add time' 
}

由于ajax倒计时是全局的,并且由于传输和渲染延迟,该函数可以由多个用户调用。什么好主意吗?

我假设,当timleft结束,你的脚本运行,你也更新date_upd到一个新的时间?

在这种情况下,您可以执行更新并检查是否有受影响的行。
如果另一个脚本比查询中的WHERE更快,则将不再工作,并且affected_rows将为0。

$new_date_upd = date('Y-m-d H:i:s', strtotime('+2 hours'));
mysql_query("UPDATE wallet SET date_upd = '{$new_date_upd}' WHERE date_upd = '{$wallet->date_upd}'");
if (mysql_affected_rows() > 0) {
   // this script is the only one doing this stuff 
}

所以这应该是在MySQL工作的东西。

如果你正在管理自己的服务器,并且可以安装一些东西,那么我建议你检查Redis。IO,这是一个伟大的工具做内存的东西(像一个先进的memcache),它也可以帮助你做'锁定'在一个很好的方式