uptime!! v0.3
WordPressプラグインで管理ページ以外のところにフックを使ったことがなかったので、試しにthe_contentにフックしてみた。
とりあえず、記事に書かれた任意のhtmlコメントを置換してみることに。
“<!– uptime!!#uptime –>”で連続稼働時間
“<!– uptime!!#idletime –>”でアイドル時間
ま、実用性はないよねぇ…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | <?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; } ?> |
◆ 実行結果
連続稼働時間:
アイドル時間:

205StudioTR