2012-04-18 55 views
0

假設多維關聯數組在以print_r()作爲文本打印時創建470 KiB文件。假設所討論的變量在每個實例中佔用了半個MiB的服務器內存是否合理?因此,如果1000個用戶在同一時間點擊服務器,幾乎將消耗半個GiB的內存?PHP性能:內存密集型變量

謝謝。

+0

跆拳道是「vim」標籤在這裏做? – ZyX 2012-04-18 02:26:38

回答

5

目前是IBM關於這個主題的優秀文章: http://www.ibm.com/developerworks/opensource/library/os-php-v521/

UPDATE

原始頁面被撤下,對於現在的日本版本仍然存在https://www.ibm.com/developerworks/jp/opensource/library/os-php-v521/

基本外賣的形式,它是你可以使用memory_get_usage()來檢查你的腳本目前佔用了多少內存:

// This is only an example, the numbers below will differ depending on your system 
echo memory_get_usage() "\ n";. // 36640 
$ A = str_repeat ("Hello", 4242); 
echo memory_get_usage() "\ n";. // 57960 
unset ($ a); 
echo memory_get_usage() "\ n";. // 36744 

此外,您可以使用memory_get_peak_usage()檢查腳本的峯值內存使用情況。

作爲您的問題的答案:print_r()是數據的表示形式,其中包含文本和格式。佔用的內存本身將少於print_r()的字符數。數據取決於數據。你應該像上面的例子那樣檢查它。

無論結果如何,每個用戶都會執行該腳本,所以是的 - 如果1000個用戶同時請求它,則需要該內存。

+0

謝謝,這非常相關。 – dotancohen 2012-04-18 01:58:15

+1

tl; dr:運行'memory_get_usage()',創建你的數組,然後再運行'memory_get_usage()',然後減去。 – 2012-04-18 02:32:25

+0

鏈接的文章顯示了這一點;) – 2012-04-18 02:44:06