Moin!
Abgesehen davon, dass ich mit MySQL auskommen muss, steht als serverseitige Technologie PHP zur Verfügung. Dabei habe ich mit eines gefragt. Wenn ich mit PHP objektorientiert programmiere, d.h. unter Einhaltung von MVC mit Design Pattern, ist es dann nicht eine enorme Ressourcenanforderungen an den Server, wenn er bei jedem neuen Besucher alles neu interpretieren muss?
Das muss er sowieso, egal ob du nun objektorientiert oder prozedural programmierst. Die jeweilige Menge an Quelltext muss geparst werden, entsprechende Datenstrukturen entstehen dann während des Programmablaufs, externe Ressourcen abzufragen (DB etc.) verbraucht ebenso Zeit, und am Ende wird das Resultat in den Ausgabepuffer des Webservers geschrieben und das Skript wieder restlos entfernt. Nächster Aufruf - wieder das Gleiche.
Oder passieren im Hintergrund ähnliche Instanzierungsprozesse wie bei Java? Ich weiß, dass PHP zwar im Prinzip interpretiert wird, aber vielleicht kennst sich jemand mit der Materie besser aus?
Auch Java wird im Prinzip "interpretiert", allerdings auf einer etwas anderen Ebene: Der vom Java-Compiler generierte Bytecode wird nämlich nochmal interpretiert bzw. uminterpretiert in plattformabhängigen Code, und je nach Bedarf, den die JVM feststellt, auch noch optimiert. Deswegen hat es so deutliche Vorteile, wenn Java auf dem Server eingesetzt wird (im Vergleich zum Einsatz beim Client als Applet), weil die kompilierten und optimierten Programme im Speicher bleiben (bzw. in diesem Zustand auf Festplatte ausgelagert würden), bis der Server mal neu gestartet wird.
PHP hat diesen Laufzeitvorteil des Skriptstarts nicht (es gibt Opcode-Caches, die dafür sorgen, dass ein Skript schneller startet), aber auch Java arbeitet erstmal jeden Request einzeln ab, der erstmal unabhängig von allen anderen Requests vorher, nachher und parallel zu bearbeiten ist. Wenn man mit Java Persistenz haben will, braucht man auch dort zusätzliche Hilfe, beispielsweise durch das Hibernate-Framework.
Ich möchte nicht ausschließen, dass es durchaus möglich ist, auch mit PHP etwas zu programmieren, was Persistenz realisiert. Schließlich sind ja entsprechende Funktionen z.B. für den Zugriff auf Shared Memory und Semaphoren vorhanden bzw. können eingebunden werden. Allerdings würde ich zunächst mal davon abraten, so etwas pauschal in das Projekt zu integrieren, denn es verkompliziert einerseits die Sache extrem, erzeugt bei falscher Nutzung einen Sack voller Probleme inklusive möglicher Sicherheitslücken, und löst andererseits nicht jedes Performanceproblem.
Mein alter Spruch zu dem Thema: Performanceprobleme sollte man lösen, wenn man sie hat - nicht vorher.
Von den Kosten her würde sich ein Rootserver derweil nicht rechnen. Allerdings wäre man dann zumindest nicht mehr auf MySQL angewiesen, aber das steht wieder auf einem anderen Blatt.
MySQL ist nicht so böse, wie gerne behauptet wird, allerdings könnte dieser Einwand für dich natürlich die Initiative sein, schon direkt einen DB-Abstraktionslayer zu benutzen.
- Sven Rautenberg
"Love your nation - respect the others."