当前位置: 代码迷 >> Web前端 >> 道WEB机器时间同步的重要性
  详细解决方案

道WEB机器时间同步的重要性

热度:311   发布时间:2013-10-31 12:03:52.0
谈WEB机器时间同步的重要性
  作者:zhanhailiang 日期:2013-10-31

php实现time()的方式是直接使用C的time()来获取时间截, 而C的time()是直接读取当前机器时间值.

/* {{{ proto int time(void)
   Return current UNIX timestamp */
PHP_FUNCTION(time)
{
    RETURN_LONG((long)time(NULL));
}
/* }}} */

如下脚本读取的时间都是当前机器的时间截.

<?php
 
echo time().PHP_EOL;

此时就涉及一个问题: 对于一些对时间极度敏感的应用, 如果不同机器时间不同步, 可能导致读取到值不同.

比如: 最近万圣节活动, 要求女巫出现时间不能超过12秒, 我的做法是通过定时任务, 在推送女巫之前先在memcache写入一个校验值, 当用户点击女巫时请求php判断当前时间和校验值的差, 但是由于定时任务跑在web1机器, 读取的时间为web1的时间截, 而请求php可能被负载到不同的机器, 而若此时刚好这台机器较web1快了12秒以上, 导致校验不通过, 这样就直接影响线上业务.

其它场景, 比如memcache机器部署在独立机器, 同样需要关注机器时间同步问题.

参考阅读:

  • linux 时间同步的2种方法
  • 稳定的NTP时间同步服务器集群

1楼Etoak_james26分钟前
不错 顶了nnnnnnnQQ群:294881724 java高性能 和sql优化。
  相关解决方案