-
- echomemory_get_usage(), '
' // 313864
- $tmp = str_repeat('http://www.nowmagic.net/', 4000);
- echomemory_get_usage(), '
' // 406048
- unset($tmp);
- echomemory_get_usage() // 313952
- ?>
-
上記の後ろにあるコードをコピーしますプログラム コメントは出力 (単位はバイト) を表します。これは、その時点で PHP スクリプトによって使用されるメモリです (memory_get_usage() 関数自体によって占有されるメモリは除きます)。
上記の例からわかるように、メモリ使用量を減らすために、PHP unset() 関数を使用して不要になった変数を削除できます。同様のものには、PHP の mysql_free_result() 関数が含まれます。この関数は、データベースのクエリによって取得された不要になった結果セットをクリアして、より多くの利用可能なメモリを取得できるようにします。
PHPのmemory_get_usage()関数は、値がブール値であるパラメータ$real_usageを持つこともできます。デフォルトは FALSE で、取得されたメモリ使用量にはこの関数 (PHP メモリ マネージャー) が占有するメモリは含まれません。TRUE に設定すると、取得されたメモリにはこの関数 (PHP メモリ マネージャー) が占有するメモリは含まれません。
実際のプログラミングでは、memory_get_usage() 関数を使用して各メソッドが占有するメモリを比較し、どのメソッドがより少ないメモリを使用するかを選択できます。
実用的な機能を投稿します:
if (!function_exists('memory_get_usage')) {- /**
- +------------------------------------------------ ----------
- * メモリ使用量を取得します
- +-------------------------------- - ------------------------
- * @return integer
- +----------------- - --------------------------------------
- */
- functionmemory_get_usage()
- {
- $pid = getmypid();
- if (IS_WIN)
- {
- exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);
- return preg_replace('/[^0-9]/', '', $output[5]) * 1024;
- }
- else
- {
- exec("ps -eo%mem,rss,pid | grep $pid", $output);
- $output =explode(" ", $output[0]);
- return $ Output[1] * 1024;
- }
- }
- }
-
-
- コードをコピー
関数を使用する別の例:
//memory_get_usage(); $m1 =memory_get_usage();
echo ' ,$m1;//58096
$a = 'こんにちは';
$b = str_repeat($a,1000);
$m2 =memory_get_usage();
echo ' m2:',$m2;//63424
unset($b);
$ m3 =memory_get_usage();
echo ' m3:',$m3;//58456
?>
コードをコピー
|