Warum eignet sich PHP für stark frequentierte Websites?

Lesezeit: 7 Minuten

Ich war überrascht, als ich heute erfuhr, dass PHP auf stark frequentierten Websites weit verbreitet ist.

Ich dachte immer, dass PHP in Bezug auf die Leistung nicht stark ist, da es sich um eine dynamische Skriptsprache handelt (z. B. im Vergleich zu statisch typisierten, kompilierten Sprachen wie C/Java/C# usw.).

Wie kommt es also, dass es so gut funktioniert?

Was Sie normalerweise feststellen werden, ist, dass es nicht so langsam ist, wie Sie denken. Viele Websites sind langsam, weil die Hosts überlastet sind.

Aber ein Hauptvorteil von PHP gegenüber einer kompilierten Sprache ist die einfache Wartung. Da PHP von Grund auf für HTTP-Verkehr konzipiert ist, muss weniger erstellt werden als bei den meisten anderen kompilierten Sprachen. Außerdem wird das Zusammenführen von Änderungen einfacher, da Sie den Server nicht neu kompilieren und neu starten müssen (wie Sie es mit einer kompilierten Binärdatei tun würden) …

Ich habe eine beträchtliche Anzahl von Benchmarks für beide durchgeführt, und für irgendwo unter etwa 50.000 Anfragen pro Sekunde (basierend auf meinen Zahlen) gibt es wirklich keinen signifikanten Gewinn durch die Verwendung einer kompilierten Binärdatei (FastCGI). Sicher, mit kompiliertem C ist es etwas schneller, aber wenn Sie nicht über Traffic auf Facebook-Ebene sprechen, bedeutet das nicht wirklich viel $$$. Und es wird definitiv nicht die relativ schnelle Entwicklungsrate ausgleichen, die PHP im Vergleich zur Verwendung von C leisten wird (was höchstwahrscheinlich ein Vielfaches des Codes erfordern wird, da es nicht speicherverwaltet ist) …

PHP kann, wenn es richtig geschrieben ist, ziemlich skalierbar sein. Die einschränkenden Faktoren liegen normalerweise in Ihrer Datenbank-Engine. Und das wird ein gemeinsamer Faktor sein, egal welche Technologie Sie verwenden …

  • In Bezug auf Facebook … sie haben einen PHP-zu-C++-Konverter entwickelt … also wirklich den größten Teil ihrer Website ist läuft auf C++.

    – mp

    23. Juli 2010 um 16:40 Uhr

  • Stimmt, aber der größte Teil ihres Quellcodes ist in PHP geschrieben. Es ist also ein Graubereich, was es ausführt (es ist eine kompilierte Binärdatei, aber andererseits ist es auch PHP … Es bietet das Beste aus beiden Welten). Und wie ich oben sagte, haben sie ein Verkehrsniveau, das erhebliche Gewinne bringt, wenn sie von einem interpretierten Server (PHP) zu einem kompilierten Server (PHP->C++->G++->Binär) wechseln …

    – ircmaxell

    23. Juli 2010 um 16:56 Uhr

  • Es ist ein bisschen wie ein Strohmann-Argument, die PHP-Webentwicklung mit der C-Webentwicklung zu vergleichen und dann (ziemlich offensichtlich) zu dem Schluss zu kommen, dass PHP besser dafür geeignet ist und daher nicht kompiliert besser als kompiliert für die Webentwicklung ist. Wie sieht der Vergleich für eine kompilierte Sprache aus, die für die Webentwicklung geeignet ist, wie C# mit ASP.NET MVC?

    – JulianR

    24. Juli 2010 um 0:03 Uhr

  • Nun, mir ist klar, dass Sie hier ironisch sind, aber keiner der Nachteile der Webentwicklung mit C gilt für die Webentwicklung mit C# und ASP.NET MVC. Und ich meine hier MVC, da ich normales ASP.NET nicht so sehr mag.

    – JulianR

    24. Juli 2010 um 14:18 Uhr

  • Nun, das stimmt. Und ich habe nie gesagt, dass ASP.NET schlecht ist (abgesehen von meinem Scherzkommentar). Was ich gesagt habe, war, dass es in Bezug auf die Leistung der Sprache sehr wenig gibt, was PHP von den anderen Sprachen ausgleicht. Wenn Sie eine geeignete Plattform auswählen möchten, müssen Sie sich mit mehr als nur der Leistung befassen (es sei denn, Sie haben Facebook-Traffic-Niveaus). Ein Beispiel sind Lizenzkosten. Um es ganz klar zu sagen, ASP.NET ist für eine Site mit mittlerem Datenverkehr (alles, was mehr als 1 Server benötigt) erheblich teurer als für PHP/Linux. Aber es gibt kein klares “Einer ist besser” …

    – ircmaxell

    24. Juli 2010 um 15:23 Uhr

Benutzer-Avatar
bpeterson76

Java-Bereitstellungen in einem großen Unternehmen sind ein Durcheinander … der Kampf mit Builds und Code, die möglicherweise nicht für die kleinsten Kleinigkeiten kompiliert werden. Außerdem läuft PHP serverseitig auf einem ziemlich einfachen Setup, nicht auf dem sperrigen Code von Weblogic (oder anderen), also haben andere Recht damit, dass die Entwicklung kostengünstig und die Bereitstellung auf mehreren verschiedenen Computern kostengünstig ist. Es hat sicherlich nicht geholfen, dass ich durch die Arbeit in einer großen, SEHR ineffizienten Unternehmensumgebung gesäuert wurde, während ich Java machte ….

Ich würde nicht sagen, dass PHP-Entwickler per se billiger sind (als PHP-Entwickler verdiene ich jetzt mehr als als Java-UI-Entwickler), aber ich weiß, dass mein letzter Arbeitgeber mich für einen nicht unerheblichen Zeitaufwand für die Konfiguration bezahlt hat , Bereitstellen, Kompilieren usw., das in PHP nicht erforderlich ist. Wir sprechen wahrscheinlich von einem Tag/einer Woche damit verbundener Konfigurationsaufregung aufgrund neuer Branch-Rollouts oder releasebezogener Konfigurationen. Das, was ich jetzt zusätzlich bekomme, wird also durch eine beträchtliche Menge mehr Code wettgemacht, den ich jede Woche durcharbeiten kann.

PHP wird sicherlich durch die Tatsache geholfen, dass MySQL und Postgres (in geringerem Maße) so viel leistungsfähiger geworden sind. Sie sind nicht direkt miteinander verbunden, aber das als gemeinsame Paarung zu haben, versüßt den Deal für diejenigen, die Entscheidungen treffen.

  • +1 “Kämpfe mit Builds und Code, die möglicherweise nicht für die kleinsten Kleinigkeiten kompiliert werden” …

    – Dan Rosenstark

    23. Juli 2010 um 18:51 Uhr

Es funktioniert nicht wirklich “so gut”, gerade gut genug, um verwendet zu werden. Beachten Sie jedoch, dass Java und C#.NET auch als Bytecode innerhalb einer VM ausgeführt werden. PHP kann mit Tools wie Zend Optimizer auch den Kompilierungsschritt überspringen und als Bytecode ausgeführt werden.

PHP läuft nicht so schnell wie nativer, kompilierter C-Code, aber Websites wie Facebook kompilieren PHP zu C++, damit es schneller läuft (siehe HipHop-PHP).

  • Tatsächlich ist es unmöglich, C# als Bytecode mit der standardmäßigen .NET-Distribution auszuführen – es wird immer JIT-kompiliert zu nativem Maschinencode. Obwohl Java als Bytecode ausgeführt werden kann, ist es normalerweise auch JIT-kompiliert.

    – Joel Müller

    23. Juli 2010 um 15:57 Uhr

Die meisten Websites haben Leistungsengpässe beim Abfragen einer Datenbank usw. Die Zeit, die das Skript für die Ausführung benötigt, ist im Vergleich dazu normalerweise gering. Die Verwendung von Dingen wie libmemcached kann helfen, dies zu mildern.

Viele Websites begannen als Websites mit geringem Datenverkehr. Sobald Ihre PHP-Website läuft und Sie plötzlich viel höheren Datenverkehr bewältigen müssen, ist es billiger, einfach mehr Server zu kaufen, als Ihre Anwendung von PHP auf etwas anderes umzuschreiben. Darüber hinaus gibt es Tools, die die PHP-Performance verbessern.

Beachten Sie auch, dass es andere Faktoren gibt: Datenbank, Caching-Strategie, die die Leistung stärker beeinflussen als PHP selbst.

Benutzer-Avatar
Imran

Tut es nicht, weshalb es Projekte wie gibt Hip Hopaber dynamische Sprachen lassen sich oft schneller entwickeln, und Hardware ist billiger als Entwickler.

Benutzer-Avatar
bald weich

Meiner Meinung nach ist die zustandslose Natur von PHP der wichtigste Faktor für seine Skalierbarkeit. Es ist schon eine Weile her, dass ich mit Java/ASP.NET im Web gearbeitet habe, aber ich erinnere mich, dass beide Technologien eine zentrale Anwendungs-„Engine“ haben, durch die alle Anfragen geleitet werden. Das ist großartig, weil Informationen und Status zwischen Instanzen geteilt werden können und viel Bootstrapping (Lesen von Konfigurationsdateien, Herstellen einer Verbindung zu Datenbanken usw.) einmal durchgeführt und dann von Instanzen geteilt werden kann. Es ist jedoch schlecht, weil diese zentrale “Engine” selbst zu einem Engpass für die gesamte Anwendung wird.

Das Fehlen einer zentralen Engine in PHP bedeutet auch, dass die Skalierung Ihrer Anwendung in der Regel einfach aus dem Hinzufügen eines weiteren Webservers zu Ihrer Anlage besteht (obwohl die Skalierung der Datenbank zusammen mit ihr komplizierter ist). Ich stelle mir vor, dass das Skalieren einer Java/ASP.NET-Anwendung viel komplizierter ist und sie einen Sättigungspunkt erreichen, an dem das Hinzufügen von mehr Hardware jedes Mal weniger Schub bringt.

  • HTTP ist zustandslos, nicht PHP … Bezüglich der “zentralen Engine” hat PHP die Zend Engine. Und dieses Bootstrapping (Lesen von Konfigurationsdateien, Verbinden mit Datenbanken usw.) ist für jede nicht triviale PHP-App ungefähr gleich. Sicher, die Verwendung von YAML durch einige PHP/Ruby/Pythons-Apps mag attraktiv erscheinen, aber das allein kann kaum ein Verkaufsargument sein.

    – Halil Özgür

    16. Dezember 2011 um 15:29 Uhr

1178750cookie-checkWarum eignet sich PHP für stark frequentierte Websites?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy