1. 程式人生 > >用PHP函式memory_get_usage獲取當前PHP記憶體消耗量 .

用PHP函式memory_get_usage獲取當前PHP記憶體消耗量 .

用PHP函式memory_get_usage獲取當前PHP記憶體消耗量:
PHP效能優化過程中避免不了需要獲取PHP記憶體消耗,使用memory_get_usage()函式可獲取當前的記憶體消耗情況,函式使用簡單,下面介紹下memory_get_usage()函式的用法與例項。

一,函式原型
int memory_get_usage ([ bool $real_usage = false ] )

二,版本相容
PHP 4 >= 4.3.2, PHP 5

三,基礎用法與例項
1,獲取當前的記憶體消耗量
<?php
echo memory_get_usage();
$var = str_repeat("phpzixue.cn", 10000);

echo memory_get_usage();
unset($var);
echo memory_get_usage();
?>
分別輸出:62328 122504 62416
說明:memory_get_usage()函式輸出的數值為bytes單位

2,格式化memory_get_usage()輸出
<?php
function convert($size){
$unit=array('b','kb','mb','gb','tb','pb');
return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];

}
echo convert(memory_get_usage(true));
?>
輸出:256 kb

3,自定義函式獲取陣列或變數值大小
<?php
function array_size($arr) {
ob_start();
print_r($arr);
$mem = ob_get_contents();
ob_end_clean();
$mem = preg_replace("/\n +/", "", $mem);
$mem = strlen($mem);
return $mem;
}
$memEstimate = array_size($GLOBALS);
?>
可以看出,要想減少記憶體的佔用,可以使用 PHP unset() 函式把不再需要使用的變數刪除。類似的還有:PHP mysql_free_result() 函式,可以清空不再需要的查詢資料庫得到的結果集,這樣也能得到更多可用記憶體。


PHP memory_get_usage()還可以有個引數,$real_usage,其值為布林值。預設為 FALSE,表示得到的記憶體使用量不包括該函式(PHP 記憶體管理器)佔用的記憶體;當設定為 TRUE 時,得到的記憶體為包括該函式(PHP 記憶體管理器)佔用的記憶體。

所以在實際程式設計中,可以用PHP memory_get_usage()比較各個方法佔用記憶體的高低,來選擇使用哪種佔用記憶體小的方法。