自宅サーバーの連続稼働時間表示メモ

自宅のサーバーをWindowsからLinuxへ変更したことによって、当Blogの画面左上の稼働時間表示用のスクリプトを更新しました。
とりあえず今後のために、メモとしても一応書いておきます[ペン/]
飽くまで当Blogの例ですが。
まず、このppblogのindex.phpと同じディレクトリにある
“utils.php”の199行目、
'%_TIME_%' => 'Created in '.BenchMark().' sec.',
(HTML生成時間表示用変数の定義。今はこのパーツは使ってない)
の下に、
'%_UPTIME_%' => getUptime()
という変数を定義。稼働時間ってことでuptimeとする。
次に、同じく”utils.php”の、分かり易く一番下へ下記を追加。
CentOS5の場合

function getUptime()
{
$uptime = shell_exec('uptime');
$uptime = explode(' up ', $uptime);
$uptime = explode(', ', $uptime[1]);
$pos = strpos($uptime[0], ' day');
if ($pos === false) {
$uptime = $uptime[0];
} else {
$days = substr($uptime[0], 0, $pos);
$uptime = $uptime[1];
}
$pos = strpos($uptime, ':');
$hrs = strpos($uptime, ' hr');
$mins = strpos($uptime, ' min');
$secs = strpos($uptime, ' sec');
if ($pos === false) {
if ($hrs === false) {
if ($mins === false) {
if ($secs === false) {
} else {
$secs = substr($uptime, 0, $secs);
}
} else {
$mins = substr($uptime, 0, $mins);
}
} else {
$hrs = substr($uptime, 0, $hrs);
}
} else {
$uptime = explode(':', $uptime);
$hrs = $uptime[0];
$mins = $uptime[1];
}
/*
$uptime = shell_exec('uptime');
$uptime = substr(strrchr($uptime, ":"), 2);
$uptime = explode(' ', $uptime);
*/
$str = 'この自宅サーバーは ';
if (isset($days)) {
$str.= '<span id="uptime_day" style="color: #FFB6C1; font-weight: bold;">' . $days . '</span> 日と ';
}
if ($hrs !== false) {
$str.= '<span id="uptime_hour" style="color: #FFB6C1; font-weight: bold;">' . $hrs . '</span> 時間 ';
}
if ($mins !== false) {
$str.= '<span id="uptime_minute" style="color: #FFB6C1; font-weight: bold;">' . $mins . '</span> 分 ';
}
if ($secs !== false) {
$str.= '<span id="uptime_second" style="color: #FFB6C1; font-weight: bold;">' . $secs . '</span> 秒 ';
}
$str.= '連続稼働中!';
return $str;
}

Windowsの場合
(C:\windows\system32に”uptime.exe”が必須)
こちらでダウンロードできます。

function getUptime()
{
$uptime = shell_exec('uptime');
$uptime = substr(strrchr($uptime, ":"), 2);
$uptime = explode(' ', $uptime);
$str = 'この自宅サーバーは';
if ($uptime[0]) {
$str.= '<span id="uptime_day" style="color: #00ea1d; font-weight: bold;">' . $uptime[0] . '</span>日と';
}
$str.= '<span id="uptime_hour" style="color: #00ea1d; font-weight: bold;">' . $uptime[2] . '</span>時間';
$str.= '<span id="uptime_minute" style="color: #00ea1d; font-weight: bold;">' . $uptime[4] . '</span>ʬ';
$str.= '連続稼働中!';
return $str;
}

こんな感じです。
あとは、template.php内の、稼働時間を表示させたい場所で
%_UPTIME_%を使えば表示されます。
このやり方がスマートかどうかは分かりませんが、とりあえずうまく動いてるっぽいです。
一応、稼働時間が1日未満の場合の表示用に分岐も入れてます。

シェアする