2010-04-06 24 views
5

Ich schreibe gerade meine Seite mit meinem eigenen Framework um (es ist sehr einfach und tut genau das, was ich brauche, ich brauche nicht so etwas wie Zend oder Cake PHP). Ich habe viel Arbeit geleistet, um sicherzustellen, dass alles gut zwischengespeichert ist, indem ich Seiten in Dateien zwischenspeichere, so dass SQL-Abfragen vermieden werden und die Anzahl der SQL-Abfragen generell begrenzt wird.php memory wie viel ist zu viel

Insgesamt sieht es aus wie es ist sehr schnell. Die durchschnittliche Zeit für die Titelseite (über 100 Mal genommen) beträgt 0,046152 Mikrosekunden.

Aber eine Sache, über die ich mir nicht sicher bin, ist, ob ich genug getan habe, um php Gedächtnisverbrauch zu reduzieren. Das einzige Mal, dass ich Probleme damit habe, ist das Hochladen großer Dateien.

Mit der Funktion memory_get_peak_usage (TRUE), die THINK die höchste Speichermenge zurückgibt, die während der Ausführung des Skripts verwendet wurde, beträgt der Durchschnitt (über 100 Mal) 1572864 Byte.

Ist das gut?

Ich weiß, dass Sie nicht wissen, was ich tue (es ist ziemlich einfach, erhalten Sie die 10 neuesten Artikel, die Kommentaranzahl für jeden, erhalten die Benutzersteuerelemente, beliebte Tags in der Seitenleiste usw.). Aber würden Sie sich überhaupt Sorgen machen mit einem Skript, bei dem diese Art von Erinnerung 50.000 Mal am Tag getroffen wird? Oder jede Sekunde in Spitzenzeiten?

Ich realisiere, dass dies eine sehr offene Frage ist. Hoffentlich können Sie verstehen, dass es ein bisschen wie ein Schlag ins Dunkle ist und ich bin wirklich nur auf der Suche nach einer gewissen Bestätigung, dass es nicht schrecklich sterben wird, wenn der Re-Launch-Tag kommt.

EDIT: Nur ein Mini-Experiment, das ich für mich selbst gemacht habe. Ich heruntergeladen und installiert Wordpress und eine Standardinstallation ohne zusätzliche Add-ons, nur einen Benutzer und nur einen Beitrag und es verwendet 10,5 MB Speicher oder "11010048 Bytes". Ziemlich zufrieden mit meinem 1.5mb jetzt.

Antwort

3

Speicherverbrauchswerte können stark variieren und unterliegen Schwankungen, aber wie Sie bereits in Ihrem Update sagen, ist eine normale WordPress-Instanz viel, viel dicker als das. Ich hatte große Schwierigkeiten, das WordPress-Backend mit einer memory_limit von 16 Megabyte laufen zu lassen - geschweige denn, wenn Plugins ins Spiel kommen. Von daher würde ich sagen, dass ein Spitzenwert von 1,5 Megabyte bei normalen Aufgaben völlig in Ordnung ist.

Die Generationszeit hängt stark von der Hardware ab, auf der Ihre Site läuft. Eine Generationszeit von 0,046152 Sekunden (ich nehme an, Sie meinen hier Sekunden) klingt unter normalen Umständen sehr gut.

+0

Ich hätte auch Sekunden gedacht. Allerdings miße ich die Zeit mit define ('START', microtime()) am Anfang und START - microtime() am Ende. Ich denke, dass ich schreibe, wenn ich denke, dass mir die Zeit in Mikrosekunden anstatt in Sekunden genommen würde? – Rob

+0

@Rob verwenden Sie den 'float' Parameter? –

+0

php.net scheint nicht anzugeben, was der Standardwert ist. Aber nein, ich schicke kein Argument an die Microtime-Funktion. – Rob

3

Es ist eine subjektive Frage. PHP hat viel Overhead und wenn die Funktion mit TRUE aufgerufen wird, wird dieser Overhead eingeschlossen. Sie werden sehen, was ich meine, wenn Sie die Funktion in einem einfachen Hello World-Skript aufrufen. Beachten Sie auch, dass die Ergebnisse stark davon abweichen können, ob PHP als Apache-Modul oder FastCGI ausgeführt wird.

Leider kann niemand Zusicherungen geben. Es wird immer unvorhergesehene Variablen geben, die eine Seite zum Absturz bringen können. Führen Sie den Belastungstest durch. Verwenden Sie einen Code-Profiler, um die Position von Engpässen einzugrenzen, um zu sehen, ob es Möglichkeiten gibt, diese Codeblöcke effizienter zu machen.

Encyclopaedia Britannica dachte, dass sie vorbereitet waren, als sie vor zehn Jahren ihre werbefinanzierte Enzyklopädie lancierten. Die Entwickler wussten nicht, dass sie es am Tag des Starts auf Good Morning America ankündigen würden. Das ganze Ding brach tagelang zusammen.

+0

Warum wird beim Aufruf der Funktion mit TRUE viel Overhead anfallen? Muss FALSE nicht mehr berechnet werden? – Pacerier

0

Solange Ihre Systeme nicht vertauschen, ist Ihre Speichernutzung sinnvoll. Jede weitere Sorge ist nur vorzeitige Optimierung.