PHPでメモリ使用量を計測し、処理前後でその変化をログに記録する方法を解説します。
パフォーマンスを監視し、リソースの無駄遣いを防ぐ際に役立ちます。
メモリ使用量の計測に使用する関数
PHPには、現在のスクリプトのメモリ使用量を取得するための関数がいくつか用意されています。その中でも、よく使われるのが memory_get_usage() です。この関数は、メモリ使用量をバイト単位で返してくれます。
memory_get_usage
の使い方
$memoryUsage = memory_get_usage();
これで、スクリプトが使用しているメモリのバイト数が取得できます。また、memory_get_usage(true) と引数に true を指定すると、システムに割り当てられたメモリ(未使用分も含む)を取得できます。
メモリ使用量をメガバイト単位で取得する
memory_get_usage() はバイト単位の数値を返しますが、メガバイト(MB)単位に変換した方が見やすいです。なので、1024で2回割ります。
$memoryUsageInMB = memory_get_usage(true) / 1024 / 1024;
これで、MB単位で取得できます。
処理の前後でメモリ使用量を計測する
以下の例では、ある処理を行う前後でメモリ使用量を計測し、変化をログに記録しています。
コード例
public function exampleMethod(SomeModel $model)
{
// 処理前のメモリ使用量を計測
$memoryUsageBefore = memory_get_usage(true) / 1024 / 1024;
Log::info('Used memory before process: ' . $memoryUsageBefore . ' [MB]');
// 何らかのメモリを消費する処理を実行
$this->performSomeProcess($model->relatedData->someId);
// 処理後のメモリ使用量を計測
$memoryUsageAfter = memory_get_usage(true) / 1024 / 1024;
Log::info('Used memory after process: ' . $memoryUsageAfter . ' [MB]');
}
ログ出力の例
[2024-10-04 10:00:00] local.INFO: Used memory before dispatch: 12.34 [MB]
[2024-10-04 10:00:05] local.INFO: Used memory after dispatch: 15.67 [MB]
上記のように、処理前後のメモリ使用量をログに記録することで、メモリ消費量を簡単に把握できます。