2008-10-24 4 views
14

Ich baue eine Webseite, die eine MySQL-Datenbank abfragt und (derzeit) eine Nur-Text-Liste der Ergebnisse erstellt. Die Abfragen einen einzelnen Datensatz zu vervollständigen sind ähnlich:Was ist eine akzeptable Speichernutzung für eine PHP-Seite?

  • Film (Titel, Beschreibung, etc.)
    • Schauspieler im Film (Name, Geschlecht)
    • verwandte Filme

Aus Neugier habe ich memory_get_peak_usage() und memory_get_usage():

verwendet
 
start 110,440 bytes 
peak 656,056 bytes 
end 637,976 bytes 
time 0.008 seconds 

Das obige ist ohne Datensätze gefunden!

Mit 40 Datensätzen erreiche ich ungefähr 2 MB, obwohl die Zeit gleich bleibt.

Ich weiß, dass vorzeitige Optimierung ist böse und alles, aber ich habe zu fragen:

Muss ich einige Nacharbeiten tun müssen? Ist diese Speichernutzung normal? Was gilt als übertrieben?

Antwort

12

Letztlich ist es besser zu optimieren, wenn es bequem ist, aber 2MB Speicherverbrauch klingt gut. PHP4 hat eine Standardkonfiguration von 8 MB und PHP5 16 MB. Viele vorgefertigte PHP-Builds haben natürlich eine andere Konfiguration, aber wenn Sie Ihre App unter 8 MB halten können, können Sie sicher sein, dass sie in dieser Hinsicht sehr portabel ist.

8

Offensichtlich hängt alles von der Komplexität der Anwendung ab, die Sie erstellen. Im Durchschnitt benötigen die Seiten unserer Anwendung bis zu 20 MB (min) Speicher. Das liegt daran, dass es viele Objekte in der Sitzung gibt und viele Initialisierungsprozesse stattfinden, bevor das Skript sogar Hallo Welt sagen kann (Authentifizierung, Rechteverwaltung, Benachrichtigungen, ...)

Es gibt viele Dinge, die gehen im Speicherbereich, einschließlich Klassendefinitionen, Globals, Funktionsdefinitionen usw. Die Reduzierung der Anzahl der geladenen Klassen (durch Verwendung von Auto-Includes) ist eine gute Möglichkeit, Ihre Skripts nur mit der erforderlichen Anzahl von Klassendefinitionen zu versehen.

Ich weiß nicht, ob das Laden von Erweiterungen die Speichernutzung ändert - das sollte etwas zu testen sein, weil wir standardmäßig nicht alle standardmäßig geladenen Erweiterungen benötigen?

0

Solange Sie einen guten Caching-Mechanismus planen (Opcode-Cache, Objekt-Cache usw.), wird die Speichernutzung weniger relevant. Sie sind immer noch weit unter der üblichen PHP-Speicherbelegung.

3

Persönlich habe ich das Limit auf 8 MB gesetzt. Wenn ich das überschreite, versuche ich meine Bewerbung zu verbessern. Der Grund dafür ist, dass einige gemeinsam genutzte Hosts und PHP 4-Konfigurationen das Standardlimit von 8 MB pro Prozess haben.

2

PHP gibt während der Ausführung des Skripts keinen Speicher frei, sodass das Speicherlimit so hoch sein muss wie der meiste Speicher, den ein Skript benötigt. Wenn das meiste, was ein Skript jemals verbraucht, 2 MB ist, dann setze es auf 2 MB, aber wenn du 780 MB brauchst, dann setze es auf dieses.

Wir haben große Produktionssysteme mit der Speichergrenze über 2GB eingestellt. Aber das ist natürlich sehr gut auf uns abgestimmt und für unser Szenario würde ich es niemals für Shared Hosting-Umgebungen empfehlen.

-2

PHP verfügt über Ressourcenlimits, abhängig davon, welche Version Sie verwenden. Die aktuelle Version kann 128 MB, PHP 5.2.0 = 16 MB und alle vorherigen Versionen 8 MB verarbeiten.

Verwandte Themen