2016-06-14 6 views
-2

während der Arbeit an einem PHP-Skript, das ich die Server Speichernutzung Hier zu holen benötigt holen ist der Ansatz, den ich getroffen habe, das zu tun:Was ist der beste Weg, die Speichernutzung einer Website

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

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

Aber ich habe festgestellt, dass dies nicht der beste Weg ist, um dies zu tun, weil es nur die Menge an Speicher in Bytes zurückgibt, die gerade Ihrem PHP-Skript zugewiesen wird.

Also kontaktierte ich meinen Freund, der viel mehr Erfahrung mit Shell-Skripten hat, um herauszufinden, ob es irgendeinen Weg gibt, diese Speicherauslastungsdaten zu holen, die ich zehnmal ausführen kann, obwohl shell_exec(). Aber er sagte, es sei unmöglich, irgendein generisches Shell-Skript zu erstellen, das in jeder Umgebung ausgeführt werden kann.

Er sagte, wie Apache, Lightspeed, lighthttpd, nginx PHP handhabt, ist anders, also ist es schwierig, ein Skript zu schreiben, das aufzeigt, wie viel Speicher Ihre Website verbraucht. Auch wenn Sie nur nach der freien RAM- oder RAM-Nutzung auf dem Server suchen, wird es wieder völlig mehrdeutig sein, da auf dem Server viele Dinge laufen, die Speicher verbrauchen, aber das ist nicht der Speicherverbrauch Ihrer Website.

Wenn ich an dieser Stelle stand, dachte ich, ich sollte Sie darum bitten, da Sie Leute viel mehr Erfahrung haben und mir helfen können, eine generische Lösung zu finden.

P.S .: Ich freue mich nur auf Linux-Server-basierte Lösung.

+0

Sie könnten wahrscheinlich die Prozessliste, grep die Webserver/PHP-Instanzen und dann fügen Sie sie zusammen. –

Antwort

0

Hier ist ein Weg, dass ich es getan habe. Ich habe es so gemacht, weil es nicht nur über physischen Speicher berichtet, sondern auch über Swap und Puffer.

Starten Sie eine cron job um zu starten, wie oft Sie diese Information aktualisieren möchten (jede Minute zum Beispiel) Der Befehl zum Bearbeiten Ihrer cron ist sudo crontab -e. Im Inneren kann man wie folgt festgelegt werden etwas, das aussieht:

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

Dann können Sie das Protokoll über Ihre PHP-Datei, wenn Sie wollen ... Dinge verwenden zugreifen wie strpos etc finden Sie die Informationen, die Sie extrahieren können möchten aus dem Protokoll. So habe ich es gemacht, und es funktioniert ausgezeichnet.

+0

Das ist ein großartiger Ansatz, aber ich kann ihn nicht verwenden, da er in ein Plugin eingefügt werden muss, das in vielen verschiedenen Sites verwendet wird. Also kann ich nicht einfach Leute bitten, diesen Cron-Job zu erstellen. – iSaumya

Verwandte Themen