php远程校时

WBOY
WBOYOriginal
2016-06-23 14:30:081152Durchsuche

        有一种情形是这样子的,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用time()来获取的时间是可靠的,但未免会有不确切的情况,也有的服务器由于未开启ntp( Network Time Protocol)来进行时间同步,再由于硬件环境等因素,导致时间五花八门,这在通常,也就差个几分钟、最多几个小时的情况是无可厚非的,因为在同一个网站使用的是同一个时间,可是有的时候这样很糟糕。

       在internet上,有免费专门提供 UTC时间校正的授时服务器,使用NTP协议,这个可以参考前面的链接来获取更多知识。他提供的时间误差在20ms左右(不要说在数据传输过程中会耗费的时间不等,NTP早就考虑到了这一点),因此通过这种授时服务器,我们就能得非常可信的当前时间。

       我们现在就来看看用PHP怎么获取到非常精准的UTC时间,由于NTP协议稍微有一点点的不好用,我们有一个更好的协议可以用,他就是Daytime Protocol协议,通过这个协议我们可以直接得到文本数据,这样处理起来会更加方便。我们使用time.nist.gov的时间服务,代码非常简单,用TCP连接它的13端口就可以了。

$fp=fsockopen('time.nist.gov',13,$errno,$errstr,90);echo fread($fp,2096);

获得到的数据类似于这样的:

54979 09-05-28 09:10:50 50 0 0 206.9 UTC(NIST) *

这个串的每个部分都有意义,具体的请参看:http://tf.nist.gov/service/its.htm,现在我们只关心中间的部分和206.9前面的那个0,它表示服务器的健康状况,也反映当前的时间是否可信。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:让PHP 多语言 【转】Nächster Artikel:PHP 内存查看