2016-06-14 15 views
-2

而在PHP腳本,我需要獲取現在,這裏的服務器內存使用率的工作是,我已經採取做到這一點的方法:什麼是獲取網站的內存使用情況的最好辦法

$a= function_exists('memory_get_usage') ? round(memory_get_usage()/1024/1024, 2) : 0; 

$memory_consumption_percent = round ($a/$a * 100, 0); 

但是我意識到這不是最好的方法,因爲它只返回當前分配給PHP腳本的內存量(以字節爲單位)。

因此,我聯繫了我的朋友,他在shell腳本方面的經驗非常豐富,以便了解是否有任何方法可以獲取此內存使用情況數據,我可以運行shell_exec()。但他表示不可能做任何可以在任何環境下運行的通用shell腳本。

他說Apache,Lightspeed,lighthttpd,nginx處理PHP的方式是不同的,所以很難寫出一個腳本來告訴你的網站消耗多少內存。此外,如果您只是檢查服務器上的可用RAM或RAM的使用情況,那麼它將再次變得模糊不清,因爲服務器上運行的許多內容會消耗內存,但這不是網站的內存消耗。

站在這一點上,我想我應該問你們這件事,因爲你們的人有更多的經驗,並可能幫助我想出一個通用的解決方案。

P.S .:我期待着只有基於Linux服務器的解決方案。

+0

您可能可以獲得進程列表,grep webserver/php實例,然後將它們添加到一起。 –

回答

0

這是我做到的一種方式。我這樣做是因爲它不僅報告物理內存,還報告交換和緩衝區。

開始一個cron job運行多久你想更新這個信息(例如每分鐘)編輯你的cron命令是sudo crontab -e。在裏面你會設置的東西,看起來像這樣:

* * * * * rm /path/to/your/log/file/memory.log; while true; do free -s 1 > /path/to/your/log/file/memory.log; sleep 1; done 

然後你就可以通過你希望你的PHP文件隨時隨地訪問日誌...使用像strpos等你就可以提取您想要的信息從日誌。這就是我的做法,它的工作非常出色。

+0

這是一個很好的方法,但我無法使用它,因爲它需要插入到將用於許多不同站點的插件中。所以我不能讓人們去創造這個cron工作。 – iSaumya

相關問題