PHPにおける時間処理はサーバーサイドなので、必須と言えるでしょう。
任意の日数後に処理したりする方法って意外と面倒くさい書き方をしなければいけませんが、処理を知らないともっとめんどくさくなります。
OSのタスク処理でやればいいかと考えがちですが、言語内のみで処理してしまうことも時には重要。
ソース
<?php
date_default_timezone_set('Asia/Tokyo');
class timeFunction{
// 強制初期起動
function __construct(){
// start-time
$start = $this->getMsTime();
echo "start : ". $start ."s".PHP_EOL;
// sec2datetime
echo "secConvert : ".$this->getYMDHIS($start).PHP_EOL;
// MicroTime
echo "MicroSeconds :".$this->getMsTime();
echo "sleep : start...";
$this->setSleep(5.0);
echo "...sleep : end".PHP_EOL;
$end = $this->getMsTime();
echo "end : ". $end ."s".PHP_EOL;
echo "passage : " . ($end - $start) ."s".PHP_EOL;
}
// second
function getTime(){
return time();
}
// micro-second
function getMsTime(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
// Wait Time
function setSleep($ms){
sleep($ms);
}
// $second-data -> YMDHIS(week)
function getYMDHIS($sec){
$y = date("Y" , $sec); //年
$m = date("m" , $sec);//月
$d = date("d" , $sec); //日
$h = date("H" , $sec); //時
$i = date("i" , $sec); //分
$s = date("s" , $sec); //秒
$w = date("w" , $sec); //曜日
$week = array("日","月","火","水","木","金","土");
return $y."年".$m."月".$d."日 ".$week[$w]."曜日 ".$h."時".$i."分".$s."秒";
// return $sec;
}
}
new timeFunction;
実行
$ php timeFunction.php
start : 1492844453.8167s
secConvert : 2017年04月22日 土曜日 16時00分53秒
MicroSeconds :1492844453.8168sleep : start......sleep : end
end : 1492844458.8175s
passage : 5.0008299350739s
解説
PHPでtimeコマンドを使う場合はtimezone設定が必要
毎回サーバーを立ち上げてこの手の処理をする時に、timezoneのwarningが表示されてしまいますが、
※「Warning: date()」というアラート
これを回避するには、サーバーモジュールであるPHPのphp.iniにちゃんとセットするか、PHPソースコードに以下を記述しておくことで回避できます。
date_default_timezone_set('Asia/Tokyo');
プログラム処理の冒頭に書いておくといいでしょう。
タイムゾーンが固定されているのであれば、全てのPHPファイルに記述してもいいかもしれませんね。
秒数から情報を取得
time()コマンドの情報があれば、dateコマンドで情報を得ることができます。
date("取得フォーマット" , time()からの秒数);
ミリ秒の取得方法
PHPでは、以下の関数を作っておくと便利にmsecが習得できるようになります。
// micro-second
function getMsTime(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
秒数がいらない場合は、$usecのみ使いましょう。
0 件のコメント:
コメントを投稿