2012-01-14 25 views
2

在我的項目中,我使用自己的框架,並確保使用自己的日誌記錄時間和內存。現在我發現我的內存使用統計在不同的環境下有所不同。這裏我的意思是兩個環境:本地Windows和生產VPS Fedora。本地(Windows)和VPS(Fedora)的PHP內存使用差異

這裏是記錄器視圖:

<style> 
    div.lt-timer { 
     opacity: 0.5; background: #FFF; color: #777; border-radius: 5px; border: 1px solid #CCC; 
     font-size: 0.85em; position: fixed; max-width: 300px; max-height: 600px; overflow: auto; 
     bottom: 10px; right: 10px; padding: 5px; 
    } 
    div.lt-timer h4 { text-align: center; font-weight: 700; } 
</style> 
<div class="lt-timer"> 
    <h4><?php echo $timer->getName(); ?></h4> 
    <?php echo nl2br(implode('', $timer->getPoints())); ?> 
    <h4>Total used memory: <?php echo round(memory_get_usage()/1024, 2); ?> KB</h4> 
</div> 

一切都很好,除了這條線,這給差異:

<h4>Total used memory: <?php echo round(memory_get_usage()/1024, 2); ?> KB</h4> 

在Windows上我已經得到了有關 KB,但對於我在VPS Fedora上也有 KB的請求。

我還測試了含有這種相同test.php的文件:

<?php 
    $a = 999; 
    $b = 999; 
    $c = 999; 

    echo memory_get_usage(); 
?> 

這是我得到的:

本地計算機(Windows)中: 生產機(Fedora的):

eAccelerator或xCache會影響此統計信息嗎?或者我錯了?

+3

這裏有一大堆**變量,其中最少的是你的代碼。 – Brad 2012-01-14 23:21:14

+0

兩個完全不同的系統展現出不同的內存使用模式。沒有真正的驚喜... – deceze 2012-01-14 23:21:30

+0

6倍以上?..這真的很令人驚訝... – devdRew 2012-01-14 23:23:01

回答

1

從PHP 5.2.x開始,memory_get_usage()函數有一個參數。

int memory_get_usage ([ bool $real_usage = false ]) 

據php.net,$ real_usage是:

設置爲TRUE得到的內存從系統分配的實際大小。如果未設置或爲FALSE,則僅報告emalloc()使用的內存。

此外some sources說PHP需要在Apache中作爲CGI加載,以使用getmypid()正確獲取進程ID的內存使用情況。

+0

這給出了相同的,但沒有太大的區別:'524288' /'786432' – devdRew 2012-01-15 09:09:51

+0

我會嘗試加載PHP作爲CGI ...謝謝。 – devdRew 2012-01-15 09:10:41

1

php在Linux中作爲apache運行,並在windows中獨立運行。也許這可能意味着內存的差異?