我的虚拟机(VMWare / Ubuntu)出现了时间同步问题.我们认为最好的办法是直接从NTP服务器获取时间,所以我开始研究一个脚本来做到这一点,但到目前为止没有任何作用,这就是为什么我决定来这里看看是否有人能指出我的权利方向.
为了澄清,我正在寻找一种通过PHP连接到时间服务器的方法来直接检索时间并在我需要生成的时间戳上重复使用它而不是同步服务器.
这是一个完整的工作代码:
<?PHP error_reporting(E_ALL ^ E_NOTICE); ini_set("display_errors",1); date_default_timezone_set("America/Argentina/Buenos_Aires"); /* Query a time server (C) 1999-09-29,Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */ function query_time_server ($timeserver,$socket) { $fp = fsockopen($timeserver,$socket,$err,$errstr,5); # parameters: server,socket,error code,error text,timeout if($fp) { fputs($fp,"\n"); $timevalue = fread($fp,49); fclose($fp); # close the connection } else { $timevalue = " "; } $ret = array(); $ret[] = $timevalue; $ret[] = $err; # error code $ret[] = $errstr; # error text return($ret); } # function query_time_server $timeserver = "ntp.pads.ufrj.br"; $timercvd = query_time_server($timeserver,37); //if no error from query_time_server if(!$timercvd[1]) { $timevalue = bin2hex($timercvd[0]); $timevalue = abs(HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff')); $tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp $datum = date("Y-m-d (D) H:i:s",$tmestamp - date("Z",$tmestamp)); /* incl time zone offset */ $doy = (date("z",$tmestamp)+1); echo "Time check from time server ",$timeserver," : [<font color=\"red\">",$timevalue,"</font>]"; echo " (seconds since 1900-01-01 00:00.00).<br>\n"; echo "The current date and universal time is ",$datum," UTC. "; echo "It is day ",$doy," of this year.<br>\n"; echo "The unix epoch time stamp is $tmestamp.<br>\n"; echo date("d/m/Y H:i:s",$tmestamp); } else { echo "Unfortunately,the time server $timeserver Could not be reached at this time. "; echo "$timercvd[1] $timercvd[2].<br>\n"; } ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。