NTP时间服务器可以提供标准时间,可以避免服务器时间差异,javascript获取的浏览器端时间,是非常不准确的,访客可以随意调整时间,而服务器时间,也有可能和标准时间相差甚远,在需要获取相对精确的时间的时候,往往不能依赖客户端和服务器本地时间,而需要从NTP时间服务器得到更加客观标准的时间。
<?php
/*
* PHP获取中国标准北京时间
* PHP获取NTP服务器时间
* PHP获取时间服务器标准时间 避免服务器时间误差
* @Author 吴先成 qQ: 13550865073
*/
ini_set('date.timezone', 'Asia/Shanghai');
$startTime = microtime(true);
$resource = @fsockopen('time.nist.gov', 13, $code, $error, 30);
if($resource){
stream_set_timeout($resource, 30);
$response = stream_get_contents($resource);
// 服务器返回的字符串形如 57637 16-09-06 16:26:17 50 0 0 147.2 UTC(NIST) *
$endTime = microtime(true);
$timeDifference = (int)round($endTime - $startTime);
if(preg_match('%\d{2}\-\d{2}\-\d{2}\s+\d{2}\:\d{2}\:\d{2}%', $response, $match)){
// 得到当前时间戳
$timestamp = strToTime('20'.$match[0]) + 3600*8 + $timeDifference;
echo date('Y-m-d H:i:s', $timestamp);
}
}
?> |
|