【PHP8.x】sys_getloadavg関数の使い方

作成日: 更新日:

sys_getloadavg関数は、システムのロードアベレージを取得する関数です。ロードアベレージとは、システムの負荷状況を示す重要な指標であり、CPUの実行を待っているプロセスの平均数を表します。この関数を呼び出すと、3つの要素を持つ配列が返されます。配列の各要素は浮動小数点数で、それぞれ直近1分間、5分間、15分間の平均負荷を示します。具体的には、配列の最初の要素が1分間の平均、2番目が5分間の平均、3番目が15分間の平均値です。これらの値を確認することで、短期的な負荷の急上昇や、長期間にわたるシステムの負荷傾向を把握することが可能になります。主にサーバーのパフォーマンス監視スクリプトや、システムの負荷がしきい値を超えた場合に管理者へ通知を送信するような処理を実装する際に役立ちます。この関数はLinuxやmacOSのようなUnix系のオペレーティングシステムでのみサポートされており、Windows環境では動作しません。サポートされていない環境で呼び出された場合や、情報の取得に失敗した場合は false を返します。

基本的な使い方

構文(syntax)

<?php

$load_averages = sys_getloadavg();
print_r($load_averages);

?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

array|false

この関数は、システムの平均負荷を示す3つの数値を格納した配列、または処理に失敗した場合は false を返します。

サンプルコード

PHPでシステムのロードアベレージを取得する

<?php

/**
 * sys_getloadavg() 関数を使用してシステムのロードアベレージ(平均負荷)を取得し、表示するサンプルコードです。
 * ロードアベレージは、システムにかかっている負荷の度合いを示す指標です。
 * この関数は主にUNIX系のオペレーティングシステムで動作します。
 */

// sys_getloadavg() を呼び出し、システムのロードアベレージを取得します。
// 成功した場合は float 型の要素を持つ配列、失敗した場合は false を返します。
$loadAverage = sys_getloadavg();

// ロードアベレージが正常に取得できたかを確認します。
if ($loadAverage === false) {
    // 関数が false を返した場合、ロードアベレージの取得に失敗したことを示します。
    // 例: Windows OS など、この機能が利用できないシステム。
    echo "システムのロードアベレージを取得できませんでした。\n";
    echo "この機能は現在のオペレーティングシステムでは利用できない可能性があります。\n";
} else {
    // 取得したロードアベレージの値を表示します。
    // 配列の各要素は、それぞれ以下の期間の平均負荷を表します。
    // $loadAverage[0]: 直近1分間の平均負荷
    // $loadAverage[1]: 直近5分間の平均負荷
    // $loadAverage[2]: 直近15分間の平均負荷
    echo "システムのロードアベレージ:\n";
    echo "  直近1分間:  " . $loadAverage[0] . "\n";
    echo "  直近5分間:  " . $loadAverage[1] . "\n";
    echo "  直近15分間: " . $loadAverage[2] . "\n";
}

?>

このPHPサンプルコードは、システムの平均負荷、すなわち「ロードアベレージ」を取得し表示する sys_getloadavg() 関数の使用例です。ロードアベレージは、システム全体にかかっている負荷の度合いを示す重要な指標で、主にUNIX系のオペレーティングシステムで利用されます。

この関数は引数を必要としません。実行すると、システムの負荷状況に応じて2種類の値を返します。正常に情報を取得できた場合は、3つの浮動小数点数を含む配列を返します。この配列の0番目、1番目、2番目の要素は、それぞれ「直近1分間」「直近5分間」「直近15分間」の平均負荷を表します。一方、Windows OSなど、この機能がサポートされていない環境で実行された場合や、何らかの理由で取得に失敗した場合は false を返します。

サンプルコードでは、まず sys_getloadavg() を呼び出して結果を変数に格納します。次に if 文を用いて、戻り値が false かどうかを判定しています。false の場合は取得に失敗した旨のメッセージを表示し、配列が返ってきた場合は、各期間の平均負荷を説明と共に画面に出力する、という流れになっています。

sys_getloadavg()関数はシステムの平均負荷を取得しますが、戻り値がarray型またはfalse型である点に注意が必要です。関数が失敗した場合はfalseを返すため、サンプルコードのように必ずif ($loadAverage === false)で取得の成否を確認してから処理を進めるようにしてください。この確認を怠ると予期せぬエラーにつながる可能性があります。また、この関数は主にUNIX系のオペレーティングシステムで動作するため、Windowsなどの環境では利用できない場合があります。その際もfalseが返されます。取得できたロードアベレージは、配列の0番目から順に「直近1分間」「直近5分間」「直近15分間」の平均負荷を示しています。これらの数値を正しく理解し、システムの監視に役立ててください。

【PHP8.x】sys_getloadavg関数の使い方 | いっしー@Webエンジニア