您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在PHP中利用memory_get_usage函數(shù)獲取程序占用的內(nèi)存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
使用示例:
復制代碼 代碼如下:
<?php
echo memory_get_usage(), '<br />'; // 313864
$tmp = str_repeat('http://www.nowamagic.net/', 4000);
echo memory_get_usage(), '<br />'; // 406048
unset($tmp);
echo memory_get_usage(); // 313952
?>
上面的程序后面的注釋代表了它們的輸出(單位為 byte(s)),也就是當時 PHP 腳本使用的內(nèi)存(不含 memory_get_usage() 函數(shù)本身占用的內(nèi)存)。
由上面的例子可以看出,要想減少內(nèi)存的占用,可以使用 PHP unset() 函數(shù)把不再需要使用的變量刪除。類似的還有:PHP mysql_free_result() 函數(shù),可以清空不再需要的查詢數(shù)據(jù)庫得到的結(jié)果集,這樣也能得到更多可用內(nèi)存。
PHP memory_get_usage() 函數(shù)還可以有個參數(shù),$real_usage,其值為布爾值。默認為 FALSE,表示得到的內(nèi)存使用量不包括該函數(shù)(PHP 內(nèi)存管理器)占用的內(nèi)存;當設置為 TRUE 時,得到的內(nèi)存為不包括該函數(shù)(PHP 內(nèi)存管理器)占用的內(nèi)存。
所以在實際編程中,可以用 memory_get_usage() 函數(shù)比較各個方法占用內(nèi)存的高低,來選擇使用哪種占用內(nèi)存小的方法。
貼個使用函數(shù):
復制代碼 代碼如下:
if (!function_exists('memory_get_usage'))
{
/**
+----------------------------------------------------------
* 取得內(nèi)存使用情況
+----------------------------------------------------------
* @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;
}
}
}
再來個函數(shù)使用例子:
復制代碼 代碼如下:
<?php
//memory_get_usage();
$m1 = memory_get_usage();
echo '<br /> m1:',$m1;//58096
$a = 'hello';
$b = str_repeat($a,1000);
$m2 = memory_get_usage();
echo '<br /> m2:',$m2;//63424
unset($b);
$m3 = memory_get_usage();
echo '<br /> m3:',$m3;//58456
?>
看完上述內(nèi)容,你們對怎么在PHP中利用memory_get_usage函數(shù)獲取程序占用的內(nèi)存有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。