想要知道編寫的 PHP 指令碼需要佔用多少記憶體嗎?很簡單,直接使用 PHP 查看當前分配給 PHP 指令碼的記憶體的函數 memory_get_usage() 就可以了。
下面是使用樣本:
'; // 313864$tmp = str_repeat('http://www.bkjia.com/', 4000);echo memory_get_usage(), '
'; // 406048unset($tmp);echo memory_get_usage(); // 313952?>
上面的程式後面的注釋代表了它們的輸出(單位為 byte(s)),也就是當時 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 +---------------------------------------------------------- */function memory_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; } }}
再來個函數使用例子:
m1:',$m1;//58096 $a = 'hello'; $b = str_repeat($a,1000); $m2 = memory_get_usage(); echo '
m2:',$m2;//63424 unset($b); $m3 = memory_get_usage(); echo '
m3:',$m3;//58456 ?>
http://www.bkjia.com/PHPjc/752404.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752404.htmlTechArticle想要知道編寫的 PHP 指令碼需要佔用多少記憶體嗎?很簡單,直接使用 PHP 查看當前分配給 PHP 指令碼的記憶體的函數 memory_get_usage() 就可以了。 下面...