ホームページ  >  記事  >  バックエンド開発  >  PHP関数memory_get_usage()は、PHPスクリプトに現在割り当てられているメモリをチェックします。

PHP関数memory_get_usage()は、PHPスクリプトに現在割り当てられているメモリをチェックします。

WBOY
WBOYオリジナル
2016-07-25 08:51:551017ブラウズ
  1. echomemory_get_usage(), '
    ' // 313864
  2. $tmp = str_repeat('http://www.nowmagic.net/', 4000);
  3. echomemory_get_usage(), '
    ' // 406048
  4. unset($tmp);
  5. echomemory_get_usage() // 313952
  6. ?>
上記の後ろにあるコードをコピーしますプログラム コメントは出力 (単位はバイト) を表します。これは、その時点で 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'))
    {
  1. /**
  2. +------------------------------------------------ ----------
  3. * メモリ使用量を取得します
  4. +-------------------------------- - ------------------------
  5. * @return integer
  6. +----------------- - --------------------------------------
  7. */
  8. functionmemory_get_usage()
  9. {
  10. $pid = getmypid();
  11. if (IS_WIN)
  12. {
  13. exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);
  14. return preg_replace('/[^0-9]/', '', $output[5]) * 1024;
  15. }
  16. else
  17. {
  18. exec("ps -eo%mem,rss,pid | grep $pid", $output);
  19. $output =explode(" ", $output[0]);
  20. return $ Output[1] * 1024;
  21. }
  22. }
  23. }
  24. コードをコピー
関数を使用する別の例:

//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
  • ?>
  • コードをコピー
  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。