Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

むか~し、某システムで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なんて文字があるのでたぶんその頃に作ったんだろなーー)

imaiworks
PHP好き好き大好き!やっぱ好き!
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです
https://ayudante.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした