分類  >  Web前端 >

道WEB機器時間同步的重要性

tags:    時間:2013-12-09 23:33:55
談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優化。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網