PHPでロードアベレージを表示させる方法
Linuxサーバではサーバのロードアベレージ(負荷状態)を知るコマンドに『w』があります。
[参考記事] ログをリアルタイムに表示させて監視する方法
[参考記事] サーバの負荷や使用率などを見るコマンドの一覧
[参考記事] 負荷が高いときには503エラーを返す方法
[参考記事] HEADリクエストを排除してサーバ負荷を軽減させる
[参考記事] Cacti RRDToolを利用したサーバ監視ツール
CPUの負荷率を表示するコマンドで、CPUのコア数より数字が大きくなっていた時には処理待ちのタスクが発生している状態です。
(Core i7では8コア、Core i5では4コア)
$ w 17:35:37 up 1 day, 2:01, 0 users, load average: 0.03, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
このフォーマットには2種類あります。
load average: 0.03, 0.01, 0.00 load averages: 0.00, 0.00, 0.02
ロードアベレージを表示させるには次のようにします。
if(!empty($_SERVER["WINDIR"])){
  ob_start();
  system("w");
  $system_w = ob_get_clean();
  if(preg_match("/load\s+averages?:\s*([0-9]+\.[0-9]+),\s*([0-9]+\.[0-9]+),\s*([0-9]+\.[0-9]+)\s*$/im",$system_w,$match)){
    $load_averages = array();
    $load_averages[] = array("name"=>1,"value"=>$match[1]);
    $load_averages[] = array("name"=>5,"value"=>$match[2]);
    $load_averages[] = array("name"=>15,"value"=>$match[3]);
    echo '<table>';
    foreach($load_averages as $load_average){
      echo '<tr><td>'.$load_average["name"].'</td><td>'.$load_average["value"].'</td></tr>';
    }
    echo '</table>';
  }
  
}
Windowsにはこのコマンドはありません。
またwebサーバで表示させるときにはApacheの表示負荷がかかるので、正確な数字を知りたい時にはcronなどを利用して負荷のかからないようにしたほうがいいです。
PHP5.1.3からはsys_getloadavgという関数があります。
1、5、15分平均の3つの数字が配列に格納されたものが返ります。
$loads = sys_getloadavg();
関連記事
- PHPでwebサーバー(apache/nginx)の実行ユーザー・グループを確認する方法
 - リクエストヘッダーやリクエストボディーなどを取得する方法
 - 負荷が高いときには503エラーを返す方法
 - サイトの更新情報をPINGサーバに送信する方法
 - PHPでTwitterのツイートをする/ツイート一覧を取得する/検索する(API v1.1)
 - インクルードパスを設定する方法
 - オブジェクト(Object)を配列(Array)に変換する方法
 - PHPでgzip圧縮形式(gz圧縮)のファイルを読み書きする方法
 - PHPでfacebook投稿時に公開範囲を指定する方法
 - PHPで複数の画像をfacebookに投稿する方法
 - PHPでfacebookのフィード(ウォール)に投稿する方法
 - PHPでのfacebookアプリの認証処理(APIを使うユーザー認証)
 - MySQL関数のまとめ
 - MySQLサーバに接続できるかどうかを確認する
 - ディレクトリ内のファイルのパーミッションを一括で変更する
 - POSTでアップロードできるファイルサイズの制限を変更する方法
 - 暗号化・複合化を行う ブロック暗号
 - date型やdatetime型と年月日時分秒への変換
 - 関数・メソッドの存在を調べる方法
 - PHPでTwitterのbotを作る方法 ツイートをする/ツイート一覧を取得する(API v1)
 - strtotimeの指定
 - PHPでHTMLメールを送る方法
 - ディレクトリセパレータを短く定義する DIRECTORY_SEPARATOR
 - モザイク画像を作る方法
 - HTML内のアクセス解析タグを除去する方法
 - HTMLのTABLEタグを簡単にCSVファイルに変換する方法
 - 画像表示のときに指定サイズにリサイズする(画像の拡大縮小)
 - テキストを可逆的な暗号化する Crypt_Blowfish
 - PHPでwhois検索をする Net_Whois
 - よく使うヘッダー関数のまとめ
 - キャリア・世代を判別する
 - mb_send_mailでCCやBCCを指定する 表示名を指定する
 - より高速に、推測困難な一意なIDを生成する方法
 - 画像ファイルを指定容量ぎりぎりに圧縮する
 - 指定したHTTPヘッダーが送信済みあるいは送信予定に含まれているか
 - DOCUMENT ROOTを得る $_SERVER["DOCUMENT_ROOT"]は使えない!
 - マルチバイト文字列(日本語文字)を一文字づつ取り出す
 - ファイルを削除する/フォルダを削除する
 - ファイルを読み込む/ファイルに書き込む
 - ディレクトリ内のファイル一覧を取得する
 - quoted-printable文字列の変換
 
スポンサーリンク





