Tag: php

timeコマンドの結果のまとめをCSV形式に変換

定期的に実行したdateとtimeコマンドの結果を time.logに追加して置いて、そのtime.logを扱いやすいように、日付、real,user,sysのcsv形式に変換する。

(date;time 時間を計測したいコマンド) > time.log 2>&1

の様にして保存した場合を想定。

<?php
 
$FP = fopen("time.log", "r");
/*
2015年 12月 17日 木曜日 10:32:03 JST
 
real    0m0.499s
user    0m0.000s
sys     0m0.000s
*/
 
$CSV = fopen("test2.csv","w");
/*
2019-6-28 02:20:01,0.273
2019-6-28 03:20:01,0.308
2019-6-28 04:20:01,0.261
2019-6-28 05:20:01,0.272
2019-6-28 06:20:01,0.3
2019-6-28 07:20:01,0.698
2019-6-28 08:20:01,0.261
2019-6-28 09:20:01,0.28
2019-6-28 10:20:01,0.283
2019-6-28 11:20:01,0.311
*/
 
$dateStr = "";
$secondStr = "";
while($b=fgets($FP, 1024)) {
    if (preg_match('/^(20\d\d)年\D+(\d+)月\D+(\d+)日\D+(\d+:\d+:\d+)\D+$/ms', $b, $mt)) {
        $dateStr = "$mt[1]-$mt[2]-$mt[3] $mt[4]";
    }
    if (preg_match('/^real\D+(\d+)m([\d\.]+)s$/ms', $b, $mt)) {
        $s = $mt[1] * 60 + $mt[2] * 1;
        $secondStr = "$s";
    }
    if ($dateStr != "" && $secondStr != "") {
        fputs($CSV, $dateStr.",".$secondStr."\n");
        $dateStr = "";
        $secondStr = "";
    }
}
 
 
fclose($FP);
fclose($CSV);
?>