有一种情形是这样子的,比如机票业务中的订票流程,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用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,2010);
获得到的数据类似于这样的:
55545 10-12-15 21:40:47 00 0 0 113.1 UTC(NIST) *
这个串的每个部分都有意义,具体的请参看:http://www.nist.gov/pml/div688/grp40/its.cfm
,现在我们只关心中间的部分和206.9前面的那个0,它表示服务器的健康状况,也反映当前的时间是否可信。
OK了,用PHP实现获得准确的UTC时间,这个应用在对时间要求非常苛刻的场合还是很有价值的,到此,我的问题也算解决了。
知道了UTC 标准时间, 剩下的就是转换成世界时间了,参看 php获取当地时间 time zone
$fp=fsockopen('time.nist.gov',13,$errno,$errstr,90);
$ufc = explode(' ',fread($fp,date('Y')));
$date = explode('-',$ufc[1]);
$processdate = $date[1].'-'.$date[2].'-'. date('Y').' '.$ufc[2];
switch($ufc[5])
{
case 0: echo '精确'; break;
case 1: echo '误差:0-5s'; break;
case 2: echo '误差: > 5s'; break;
default: echo '硬件出错!'; break;
}
echo gmttolocal($processdate,8); // 中国
function gmttolocal($mydate,$mydifference)
{
$datetime = explode(" ",$mydate);
$dateexplode = explode("-",$datetime[0]);
$timeexplode = explode(":",$datetime[1]);
$unixdatetime = mktime($timeexplode[0]+$mydifference,$timeexplode[1],0,$dateexplode[0],$dateexplode[1],$dateexplode[2]);
return date("m/d/Y H:i:s",$unixdatetime);
}
fsockopen 解释:
打开网络的 Socket 链接。
语法: int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);
返回值: 整数
函数种类: 网络系统
内容说明目前这个函数提供二个 Socket 资料流界面,分别为 Internet 用的 AF_INET 及 Unix 用的 AF_UNIX。当在 Internet 情形下使用时,参数 hostname 及 port 分别代表网址及埠号。在 UNIX 情形可做 IPC,hostname 参数表示到 socket 的路径,port 配置为 0。可省略的 timeout 选项表示多久没有连上就中断。在使用本函数之后会返回文件指针,供文件函数使用,包括 fgets()、fgetss()、fputs()、fclose() 与 feof()。参数 errno 及 errstr 也是可省略的,主要当做错误处理使用。使用本函数,会使用搁置模式 (blocking mode) 处理,可用 set_socket_blocking() 转换成无搁置模式。
分享到:
相关推荐
5. **调整本地时间**:解析得到服务器时间后,与本地时间进行比较,如果存在偏差,则调整本地系统时间,使其与授时服务器保持一致。 6. **错误处理**:在上述过程中,可能遇到网络连接问题、数据包解析错误等,需要...
标题中的“自动获取国家授时中心服务器时间,并修改系统时间。自动同步时间!”表明这是一个程序,其功能是连接到国家授时中心的服务器,获取最准确的时间信息,并将用户的计算机系统时间同步到这个标准时间。这样的...
NTP 网络授时系统设计与实现 - NTP 服务器端授时服务软件设计与实现参考 本资源摘要信息主要介绍 NTP 网络授时系统设计与实现中的 NTP 服务器端授时服务软件设计与实现相关知识点。该系统主要包括三个功能模块:...
获取NTP服务器授时中心时间源代码。 可以通过阿里云NTP服务器来获得时间,比较稳定。 ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com
通过NTP,设备可以从可靠的网络时间服务器获取时间信息,确保全球范围内的设备有统一的时间参考。 在VC++6环境下,我们可以使用Windows API中的Winsock库来实现Socket通信。Winsock是Windows操作系统对Berkeley套接...
Http协议网络对时工具,使用国家授时中心http服务器提供的标准北京时间,不受网关跨越限制,免去UDP协议对时工具无法穿越网关的烦恼。
首先,"取网络时间"是指从互联网上的时间服务器获取当前的国际协调时间(UTC),这是一种全球统一的时间标准。在易语言中,可以使用内置的网络函数来连接到NTP(网络时间协议)服务器,发送请求并接收包含当前时间的...
在编程领域,授时服务器(NTP Server)是一种提供准确时间服务的服务器,通过Internet时间协议(NTP)与全球定位系统(GPS)、原子钟等高精度时间源同步,为网络中的设备提供统一的时间参考。这个项目的核心在于如何...
1.NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。 2.Ntpd启动的时候通常需要一段时间进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,最长大概有5分钟吧...
通过学习和理解这段源码,我们可以掌握如何在易语言中处理时间戳,以及如何与国家授时中心的标准时间进行交互。 总之,易语言国家授时中心标准时间相关的编程涉及Unix时间戳的转换和处理,这对于需要精确时间的系统...
NTP授时服务器是电力系统时间同步的关键组件。它通过网络与外部的时间源进行通信,如GPS或原子钟,获取精确的时间信息,然后将这些信息分发给系统内的各个节点,确保所有设备的时间一致。在电力系统中,这种同步对于...
NTP是一种用于互联网上时钟同步的协议,通过比较和调整计算机的本地时间与远程时间服务器的时间,使计算机的时间保持精确。 3. **局域网时间同步**: 在局域网环境中,时间不一致可能导致数据冲突、日志记录混乱等...
易语言源码易语言连接授时服务器源码.rar 易语言源码易语言连接授时服务器源码.rar 易语言源码易语言连接授时服务器源码.rar 易语言源码易语言连接授时服务器源码.rar 易语言源码易语言连接授时服务器源码.rar ...
**认证与精度**:该系统已经通过中国时间授时中心的鉴定,证明其信号稳定且同步精度高,可以达到10毫秒(ms)的同步精度。这一精度对于大多数应用场景而言已经非常出色,尤其是对于那些需要高精度时间同步的应用领域来...
MINI BOX授时盒是一种新型的时间同步设备,它能够利用CDMA基站提供的精准时间信息来同步计算机时间,从而确保计算机系统时间的高度准确性与一致性。该产品主要适用于需要精确时间同步的各种应用场景,如科学研究、...
用STM32F103单片机控制SIM900A模块通过连接国外的授时服务器或者访问SIM900A内部获取网络时间,把获得的时间设置到STM32内部的RTC中,实现单片机上电自动校正时间。时间在串口上显示出来。资源是完整的工程,里面...
【对时服务器sntp时间服务器同步时间服务器】是IT领域中的关键设备,主要负责网络环境中的时间同步。这种服务器基于NTP(Network Time Protocol)和SNTP(Simple Network Time Protocol)协议,通过从GPS地球同步...
它通过互联网与时间服务器进行通信,获取准确的时间信息,并将该信息传播给客户端,确保网络中的设备具有统一的时间。 STM32作为硬件基础,其强大的处理能力使得它可以处理SNTP协议的计算需求。STM32家族拥有多种...
授时中心通常指的是国家授时中心(NTSC),这是一个为国家提供标准时间服务的专业机构,通过精确的原子钟来保持全国的时间统一。 在描述中提到的功能,即“让你的电脑毫秒不差,自动和授时中心对时”,意味着这款...
基于STM32的SNTP授时服务器的研究与设计 本文研究了基于STM32的SNTP授时服务器的设计和实现。该系统采用STM32作为核心处理器,结合W5100芯片,实现了SNTP协议,提供了精度高达1ms的时间同步服务。该系统采用C/S模型...