memory_get_usage
プロセスがピークに達したと思われる場合は、(http://php.net/manual/en/function.memory-get-usage.php) を使用できます。
または、ときどき呼び出して、最高値を記録することもできます...または好きなように。
しかし、これはプロセス内です。別の PHP プロセスのメモリ使用量をチェックする PHP プロセス「A」について話しているのでしょうか。
もしそうなら:
$myPID = getmypid();
$stats = explode("\n", shell_exec('pmap $(pgrep php) | grep \'total\\|\\:\''));
for ($i = 0; $i < count($stats); $i += 2) {
if (strpos($stats[$i], "$myPID") === false) {
preg_match('/\d+/', $stats[$i+1], $preRes);
$res = $preRes[0];
}
}
//if $res has a value, that value is the kilobytes of memory being used by the other PHP process
このソリューションには問題があります。合計で 2 つ以上の php プロセスを実行している場合、正しいプロセスを取得できるとは限りません。
これを解決するには、最初に他のプロセスを実行し、その PID を取得してから、このプロセスに引数として渡します。確認したいプロセスの PID がある場合は、次のようにします。
$stats = explode("\n", shell_exec('pmap $(pgrep php) | grep \'total\\|\\:\''));
for ($i = 0; $i < count($stats); $i += 2) {
if (strpos($stats[$i], "$otherPID") === 0) {
preg_match('/\d+/', $stats[$i+1], $preRes);
$res = $preRes[0];
}
}
//$res contains the result you want in kilobytes
あなた以外のすべてのプロセスのメモリを確認することもできます。
$myPID = getmypid();
$stats = explode("\n", shell_exec('pmap $(pgrep php) | grep \'total\\|\\:\''));
for ($i = 0; $i < count($stats) - 1; $i += 2) {
if (strpos($stats[$i], "$myPID") === false) {
preg_match('/\d+/', $stats[$i+1], $preRes);
$res[] = $preRes[0];
}
}
したがって、最大のメモリ使用量を取得するには、$max 変数を保持し、それに対してチェックを続けます。