ペチパーノート

WEB系Tipsブログです。PHP、MySQL、Linux、js等。なんだかよくわからないけどやってみる。がポリシーです。

処理のメモリ使用量を取得する

膨大なデータを扱うスクリプトで下記のようなメモリ確保エラーが出ることがあります。

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) 

下記のようにPHPの設定でメモリ使用量を増やして回避させることもできますが、
根本的にプログラム設計をやり直した方がいいことがほとんどです。

ini_set('memory_limit', '512M');

これで一旦様子見るか!ってことにすると大抵後で泣きます^^;

そんな時はメモリ使用量を取得できるmemory_get_usage()の出番です。

test.php

<?php
$mem_usage_start = memory_get_usage();
$array = range(0, 999);
$mem_usage_end = memory_get_usage();

echo 'usage:'. ($mem_usage_end - $mem_usage_start);

ブラウザの出力

usage:144608

処理前と処理後でメモリ使用量を取得し、差分を表示しています。
これで$array = range(0, 999);がどのくらいメモリを使用しているかがわかります。

ちなみにスクリプトの最大メモリ使用量はmemory_get_peak_usage()で取得することができます。