uptime!! v0.3
WordPressプラグインで管理ページ以外のところにフックを使ったことがなかったので、試しにthe_contentにフックしてみた。
とりあえず、記事に書かれた任意のhtmlコメントを置換してみることに。
“<!– uptime!!#uptime –>”で連続稼働時間
“<!– uptime!!#idletime –>”でアイドル時間
ま、実用性はないよねぇ…
<?php
/*
Plugin Name: uptime!!
Plugin URI: http://www.dazzlingworld2.com/post_4206.html
Description: サーバーの連続稼働時間、アイドル時間を表示する。
Version: 0.3
Author: だかね
Author URI: http://www.dazzlingworld2.com/
*/
/*
the_content にフック
*******************************************************************************/
add_filter('the_content', 'replace_posts', 10);
/* 記事に書かれたHTMLコメントを連続稼働時間または、アイドル時間に置き換える
"<!-- uptime!!#uptime -->" : 連続稼働時間
"<!-- uptime!!#idletime -->" : アイドル時間
*******************************************************************************/
function replace_posts($contents) {
if (eregi("<!--([[:space:]]*)uptime!!#(uptime|idletime)([[:space:]]*)-->", $contents)) {
$uptime = get_uptime();
$str_uptime = $uptime[0] . "日 " .
$uptime[1] . "時間 " .
$uptime[2] . "分 " .
$uptime[3] . "." .
$uptime[4] . "秒";
$idletime = get_uptime(1);
$str_idletime = $idletime[0] . "日 " .
$idletime[1] . "時間 " .
$idletime[2] . "分 " .
$idletime[3] . "." .
$idletime[4] . "秒";
$contents = eregi_replace(
"<!--([[:space:]]*)uptime!!#uptime([[:space:]]*)-->",
$str_uptime,
$contents
);
$contents = eregi_replace(
"<!--([[:space:]]*)uptime!!#idletime([[:space:]]*)-->",
$str_idletime,
$contents
);
}
return $contents;
}
/* 連続稼働時間を表示
*******************************************************************************/
function the_uptime() {
$uptime = get_uptime();
echo $uptime[0] . "日 " .
$uptime[1] . "時間 " .
$uptime[2] . "分 " .
$uptime[3] . "." .
$uptime[4] . "秒 ";
}
/* アイドル時間を表示
*******************************************************************************/
function the_idletime() {
$idletime = get_uptime(1);
echo $idletime[0] . "日 " .
$idletime[1] . "時間 " .
$idletime[2] . "分 " .
$idletime[3] . "." .
$idletime[4] . "秒 ";
}
/* 稼働時間またはアイドル時間を取得する。
$sw = 0 : 稼働時間
$sw = 1 : アイドル時間
*******************************************************************************/
function get_uptime($sw = 0) {
$uptime = array(0 ,0 ,0 ,0, 0); // 日時分秒㍉
// 引数が0, 1以外の場合は終了する。
if($sw != 0 && $sw != 1) return $uptime;
// "/proc/uptime" から稼働時間(秒)を取得する
unset($stdout); // $stdoutを空にする
exec('/bin/cat /proc/uptime', $stdout, $rcode);
$proc_uptime = explode(" ", $stdout[0]);
// 取得に失敗した場合は終了する。
if($rcode) return $uptime;
// 稼働時間(秒)を日時分秒㍉に変換
$usec = explode(".", $proc_uptime[$sw]);
$uptime[4] = $usec[1]; // ㍉
$uptime[3] = $usec[0] % 60; // 秒
$time = ($proc_uptime[$sw] - $uptime[3]) / 60;
if($time > 0) {
$uptime[2] = $time % 60; // 分
$time = ($time - $uptime[2]) / 60;
}
if($time > 0) {
$uptime[1] = $time % 24; // 時
$time = ($time - $uptime[1]) / 24;
}
$uptime[0] = floor($time); // 日数
return $uptime;
}
?>
◆ 実行結果
連続稼働時間:81日 17時間 49分 0.97秒
アイドル時間:158日 8時間 30分 5.68秒











205StudioTR
コメント/トラックバック
トラックバック用URL
この記事へのコメント/トラックバックRSS
この記事へのコメント/トラックバックはありません。
コメントする