2015-09-08 26 views
1

這裏是我的代碼:多次同時運行的PHP腳本的準確內存使用情況?

echo memory_get_usage() . "\n"; 
// My PHP code is here. 
echo memory_get_usage() . "\n"; 

第一行始終回聲125800和第二線回聲周圍129448.因此,一些變量,這是否意味着我所有的PHP腳本將使用的RAM 125800個字節在最少,並根據它可以根據需要增加需求?

**更新 - **

我讀this question。以下是來自已接受答案的報價

在查看內存使用情況時,您必須查看解釋器正在使用的內存。看大圖。 memory_get_usage()給你的數字是正確的數字。

我的問題是,如果同一個腳本運行了多次不分配給每個腳本內存129448個字節或做翻譯需要的125800只是一個時間內存和129448個運行該腳本的多個實例 - 125800字節的記憶。

+2

它說明了它的含義,意思是說 –

回答

1

我想你擔心在Web服務器環境中腳本的內存使用情況。

根據Web服務器和PHP配置上,則web服務器可以與產卵解釋爲每個請求或使用解釋器的一個共同的實例生成線程的一個實例的獨立進程。對於Apache httpd,請參閱this。另外,對於php,請參閱第4段here(SAPI和CGI部分)。

因此,分配的內存總量取決於您的配置。

除此之外,我想你可以做讓你的PHP腳本的內存使用情況的一個很好的估計:

$initial_mem = memory_get_usage(); 
// php code 
echo memory_get_usage()-$initial_mem." bytes"; 

這沒有考慮翻譯的分配內存。

要回答你的問題,如果你運行一個腳本n次然後解釋器將運行k次,其中k <= n。那k取決於你的配置。這意味着你將總共使用k * interpreter_memory + n * scipt_memory

如果您對腳本的內存消耗感到滿意,但希望實現更低的內存消耗,那麼我建議您監視服務器中所有php實例的總內存使用情況(在linux中使用top或在Windows中使用任務管理器或類似的東西),同時通過使用諸如Apache abApache JMeter的工具產生高流量。然後嘗試不同的配置以獲得更好的整體性能。