1. ホーム
  2. php

[解決済み】PHPでスクリプトの実行時間を追跡する

2022-03-26 12:36:27

質問

PHP は max_execution_time の制限を実施するために、特定のスクリプトが使用した CPU 時間の量を追跡する必要があります。

スクリプトの内部でこれにアクセスする方法はあるのでしょうか? 実際のPHPでどれだけCPUが消費されたかをテストで記録したいのです(スクリプトが座ってデータベースを待っているときは時間は増加しません)。

私はLinuxボックスを使用しています。

解決方法を教えてください。

Unixoidシステム(Windowsのphp 7+も同様)では、以下のようにします。 ゲトルサージュ というように。

// Script start
$rustart = getrusage();

// Code ...

// Script end
function rutime($ru, $rus, $index) {
    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000))
     -  ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000));
}

$ru = getrusage();
echo "This process used " . rutime($ru, $rustart, "utime") .
    " ms for its computations\n";
echo "It spent " . rutime($ru, $rustart, "stime") .
    " ms in system calls\n";

テストごとに php インスタンスを生成している場合は、差分を計算する必要がないことに注意しましょう。