2011-09-01 68 views
2



需要提醒。目前我使用此代碼
獲取PHP腳本的內存使用情況

$sysMem = escapeshellcmd(system('echo $(free)')); 
memory_get_usage(); 

這是結果我收到拿到劇本的內存使用情況:

總紀念品:1034708
二手紀念品:1014572
免費紀念品:20136
共享號負責:0
巴夫號負責:73456
緩存號負責:480752
------------------------------ ----------------------
紀念品Usegae:509464

總紀念品:1034708
二手紀念品:1014564
免費紀念品:20144
共享紀念品:0
的Buff紀念品:73456
緩存紀念品:480828
----- -----------------------------------------------
Mem Usegae:343904

但是我發現內存使用量是內存使用量甚至可能超過不可能的總內存。

是memory_get_usage();獲得php腳本內存使用情況的最佳選擇? 或者是我需要使用unset()函數。但即使我使用的內存仍然差不多

如果還有其他方法,敬請告知。

感謝百萬
男生和女

+0

將RAM的使用量超過物理內存並不是不可能 - 總是存在虛擬內存。 –

回答

0

這將是很難精確狀態。您可能需要更仔細地指定您正在嘗試執行的操作。

其中之一,呼籲「自由」的命令正在進入Linux的虛擬內存方案的空白。你需要知道如何有意義地解釋這些。

據我所知,get_memory_usage可能會以許多不同的方式運行,具體取決於PHP的運行方式。它似乎正在返回多少內存分配給當前的PHP解釋器總共。這不太可能表明當前腳本使用了多少內存。

此外,free以千字節爲單位返回內存。 PHP的get_memory_usage以字節爲單位返回它。你的偏差是1024倍。將後者除以1024得到可比的單位。

那麼你想要做什麼?

+0

嗨,感謝您的回覆。 – Brandothh

+0

我實際上試圖做的是優化我的腳本運行。我目前在php中使用curl函數來執行整天運行的多線程。然而在某個時候它會消失。所以我正在考慮獲取腳本的內存使用情況,然後獲取系統內存使用情況以進行一些計算,以檢查是否有足夠的內存來處理腳本或休眠腳本。 – Brandothh

+0

睡覺腳本不會釋放內存。除非腳本實際終止,否則PHP解釋器將保留已分配的內存。 – Gian

1

也許這將有助於使用純PHP。 可以使用得到確切的總內存:

ini_get('memory_limit'); 

但是,這將是類似「128M」。 要將此表單轉換爲字節,請看Stack-Overflow-Convert String Mem-Bytes into bytes。 現在你有2種方法用於獲取腳本內存使用:

memory_get_peak_usage(); 

memory_get_usage(); 

有了這些ingedients讓人不解的是容易(恕我直言)

+0

我看不到ini_get ..在這裏有幫助,它只能說明腳本可以達到的最大值! –

+0

我同意你@Dany Khalife –