PHP
ネタ
ntp
ntpd
時刻設定

ntpdを使わずにPHPで日付日時を合わせる

むか~し、某システムでfwの関係上、内側から外向きのNTPポートも閉じられてたときに作ったものです。
厳密な時刻が必要なシステムの場合は無理ですが、数msのズレでもいいなら使えなくはないと思います。

端的に言えば情報通信研究機構が提供している公開NTPのjsonを
file_get_contentsで取得して、
時刻部分を力技で切り出してdateコマンドに流し込んでいるという・・
恐ろしや・・

/bin/echo '<?php date_default_timezone_set("Asia/Tokyo");
$r=file_get_contents("http://ntp-a1.nict.go.jp/cgi-bin/jsont?".time());
$startpos=strpos($r,"st");$startpos=strpos($r," ",$startpos)+1;$endpos=strpos($r,",",$startpos);
$mt=substr($r,$startpos,$endpos-$startpos);
$cmd="/bin/date -s \"".date("m/d H:i:s Y",$mt)." JST\"";
if(date("Y",$mt)>=2012){exec($cmd);}else{echo "set error\n";}
echo "dateset ".$cmd."\n";?>' | /usr/bin/php

見た目上、改行入れてますが、全ての改行を外せばワンライナーでいけますので
ntpd設定するのメンドクセってときにはcrontabに仕込んでおけばよいかとw

(※ json_decode使わなかったのは、その時のサーバに何故か入っていなかったからw)
(※ ソース内には2012なんて文字があるのでたぶんその頃に作ったんだろなーー)