程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 如何獲知PHP程序占用多少內存

如何獲知PHP程序占用多少內存

編輯:關於PHP編程

想要知道編寫的 PHP 腳本需要占用多少內存麼?很簡單,直接使用 PHP 查看當前分配給 PHP 腳本的內存的函數 memory_get_usage() 就可以了。

下面是使用示例:

<?php
echo memory_get_usage(), '<br />'; 		// 313864
$tmp = str_repeat('http://www.bkjia.com/', 4000);
echo memory_get_usage(), '<br />'; // 406048
unset($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;
     	}
   	}
}

再來個函數使用例子:

<?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  
  
?>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved