PHP und Leistung


17

Ich höre immer, dass PHP für mittlere und kleine Websites ist, während .NET und Java für Unternehmensanwendungen. Meine Frage ist über PHP. Warum ist PHP keine gute Option für Unternehmens-Webanwendungen? Liegt es daran, dass PHP langsamer wird, wenn die Webanwendung größer wird, da es sich um eine interpretierte Sprache handelt?

Ich weiß, dass sich die Unternehmenswelt aufgrund der Integration in ihre Produkte und aufgrund von Back-End-Diensten usw. für .NET oder J2EE entscheiden wird. Wenn wir jedoch nur PHP für die Erstellung von Websites und Webanwendungen haben, wie können wir es dann einsetzen, um eine gute Leistung zu erzielen große Websites?

Kurz gesagt, besteht ein Zusammenhang zwischen der Leistung von PHP und der Größe der Website? Welche Faktoren machen PHP für große Websites nicht geeignet?


1
Mediawiki (Wikipedias Engine) ist in PHP geschrieben und hat eine gute Leistung gebracht, aber das beweist nichts. Könnte ein Nischenfall sein.
Michael K.

2
@MichaeltheGhost mit Sites in den Alexa Top 50 (und vielleicht sogar ein bisschen mehr) sind schlechte Beispiele, da ihr Volumen so extrem ist, dass ihre Lösungen stark angepasst und auf dieses Verkehrsniveau abgestimmt sind und nicht wirklich gleich sind Technologie mehr.
Ryathal

1
Facebook nutzt auch PHP. Beachten Sie auch, dass dies Aspekte der Skalierbarkeit und nicht der Leistung betrifft, aber Sie kennen den Unterschied, oder? Ein weiteres Beispiel ist Freemobile, das aus Gründen der Skalierbarkeit seine Website in PHP von Java umgeschrieben hat.
Deadalnix

"Derzeit verwendet der Großteil des PHP-Codes in Mediawiki bei Wikimedia Foundation den HHVM JIT-Compiler, obwohl einige Dienste weiterhin Zend Engine PHP verwenden." en.wikipedia.org/wiki/Wikipedia:FAQ/Technical das ist, was Facebook geschaffen hat, um PHP zu beschleunigen (es ist ein PHP zu C ++ Übersetzer, den sie dann kompilieren). es funktioniert, nur kann man nicht sagen, nur weil es in PHP geschrieben ist, wird die Geschwindigkeit immer gleich sein. Es hängt davon ab, was Sie mit dem Code in diesem Sinne tun ...
pqsk

Antworten:


19

Leistung ist wahrscheinlich nicht einer der Faktoren. Für eine dynamische Sprache ist PHP eigentlich ziemlich leistungsfähig. Je nach Aufgabe kann es andere Technologien schlagen oder auch nicht. Das Anwendungsmodell ist einfach zu unterschiedlich, um es direkt mit Java oder ASP.NET zu vergleichen. Selbst wenn es einen messbaren Geschwindigkeitsunterschied gibt, ist er nicht groß und wahrscheinlich linear, was bedeutet, dass er gelöst werden kann, indem mehr Hardware auf ihn geworfen wird. Auch die Programmiersprache selbst ist selten der Engpass - Algorithmen, Datenbankzugriff, Netzwerkbandbreite und E / A im Allgemeinen sind die üblichen Schuldigen, es sei denn, Sie schreiben etwas, das wirklich CPU-intensiv ist.

Gründe für die Verwendung von ASP.NET oder Java über PHP, die wahrscheinlicher sind:

  • Plattformintegration. ASP.NET bietet eine umfassende Integration mit .NET und dem zugrunde liegenden Windows-Betriebssystem.
  • Allgemeine Zweckmäßigkeit. PHP wurde speziell für das Web entwickelt, während .NET und Java Allzweckplattformen sind. Mit Java oder .NET können Sie sowohl Desktop- als auch Web-Frontends mit geringem Aufwand auf denselben gemeinsam genutzten Code anwenden, während PHP für das Schreiben von Desktop-Anwendungen nicht besonders geeignet ist.
  • Code-Organisationsfunktionen. Java und .NET wurden von Anfang an für OOP entwickelt, während OOP in PHP eher ein nachträglicher Einfall ist. PHP hat kürzlich Namespaces eingeführt und diese sind im Vergleich zu .NET und Java begrenzt und ungeschickt. Die Programmierung im Enterprise-Stil basiert in der Regel stark auf OOP, was PHP zum weniger geeigneten Programm macht.

Ein weiterer Grund für den wahrgenommenen Effekt ist, dass PHP kostenlos (wie in Bier) und allgegenwärtig ist - jedes billige Shared-Web-Hosting-Unternehmen hat PHP im Standardpaket, aber ein .NET- oder Java-Server wird Sie erheblich mehr kosten. Folglich verwendet eine große Menge kleiner Websites PHP, nicht weil es das beste Tool für den Job ist, sondern das einzige, das zur Hand ist.

Das heißt nicht, dass PHP für große Projekte ungeeignet ist - es passt einfach nicht gut zu der Art von 'unternehmerischer' Programmierung. Seine Stärken liegen an anderer Stelle, und wenn Sie sie nutzen können, können Sie genauso einfach umfangreiche Anwendungen erstellen wie mit jeder anderen Web-Technologie.


2
Ein kleines Problem, Sie können ASP.NET Shared Hosting zum gleichen Preis wie LAMP Shared Hosting erhalten. Das Problem besteht darin, dass die meisten Menschen auf der Suche zuerst Orte finden, die für kleine bis mittlere Unternehmen vermarktet werden und teurer sind.
Jfrankcarr

+1, das ist sehr gut gesagt und zusammengefasst. Der Engpass für die meisten leistungsschwachen Anwendungen ist selten die Sprache.
GroßmeisterB

1
Das stimmt, aber ich glaube nicht, dass Java eine Lösung ist. Ich hatte das Pech, viele 'Enterprise'-Apps von Unternehmen wie Oracle zu verwenden. Fast alle konnten durch eine PHP-OSS-App ersetzt werden, die nur über eine geringe Einschränkung der Funktionalität verfügte, jedoch eine enorme Steigerung der Leistung und Benutzerfreundlichkeit aufwies.
gbjbaanb

3
@gbjbaanb: Java ist in diesem Zusammenhang keine Lösung, da es kein Problem gibt. Und ob etwas Open Source ist oder nicht, hat absolut nichts mit dem Thema zu tun.
tdammers

@GrandmasterB ja und nein. Java zum Beispiel hat viele intern synchronisierte Primitive und PHP nicht. Es erfordert mehr Disziplin, um skalierbaren Java-Code zu schreiben. Freemobile ist ein reales Beispiel für diesen Effekt. Da die Skalierbarkeit jedoch nicht nur vom Frontend abhängt (Datenbanken sind hier zum Beispiel sehr wichtig), müssen Sie trotzdem darüber nachdenken.
Deadalnix

13

Sie verwechseln den Datenverkehr ("kleine und mittlere Website" bedeutet normalerweise eine Website mit geringem bis mittlerem Datenverkehr) mit dem Grad der Komplikation der Geschäftslogik (einfache Website vs. Unternehmenslösung). Im zweiten Fall ist die Leistung nicht der Schlüsselfaktor.

Zum Beispiel ist Facebook eine stark frequentierte Website, aber keine Unternehmens-App. Auf der anderen Seite gibt es eine Vielzahl von Intranets, die auf Java-Anwendungsservern basieren und nicht in der Lage sind, den Datenverkehr selbst mittelgroßer Websites zu verarbeiten.

Leistungsmäßig ist PHP nicht die beste Option, aber auch nicht schlecht. Besonders im Vergleich mit anderen dynamischen Sprachen. Aber auch hier ist die Rohleistung nicht der wichtigste Faktor. Bei der Erstellung von Websites mit hohem Datenaufkommen geht es mehr um die Optimierung der Skalierbarkeit auf Architekturebene.


Warum wird PHP von Unternehmen so verachtet? Es gibt nur wenige Gründe, zum einen wäre es der schreckliche Ruf der Sicherheit . Zweitens wird es als Sprache für Amateure wahrgenommen, die hässlichen, nicht verwaltbaren HTML-PHP-Spaghetti-Code erstellen. Diese Wahrnehmung bleibt bestehen, obwohl es ausgereifte MVC-Frameworks gibt. Ich glaube, der ursprüngliche Autor von PHP hat argumentiert, dass Sie kein Framework benötigen, was nicht hilft. Die Tatsache, dass sich diese ahnungslosen Amateure mit geringen Programmierkenntnissen selbst als "PHP-Programmierer" bezeichnen, hilft auch nicht weiter. Der dritte Grund ist, dass jeder erfahrene Programmierer zustimmt, dass PHP nur schlecht als Sprache ausgelegt ist. Sie können deutlich sehen, dass es von einem Webmaster entworfen wurde,

Und ja, im Unternehmen dreht sich alles um die Systemintegration, bei der auch PHP nicht glänzt. Mit genügend Aufwand können Sie C-Module erstellen. Es gibt eine PHP-Java-Brücke, deren Verwendung ziemlich mühsam ist. Darüber hinaus haben Sie nicht viel. Versuche, Boost :: PHP (Integration mit C ++) zu erstellen, sind fehlgeschlagen. PHP-Klone, die unter JVM ausgeführt werden, sind weit davon entfernt, zu 100% mit PHP kompatibel zu sein.


6

Keine Ahnung, warum Leute behaupten, PHP sei für kleine und mittlere Websites. Soweit ich weiß, stimmt das nicht. Ich kenne einige von PHP unterstützte Websites, die klein anfingen und dann zu den Top100-Websites in meinem Land wurden. Sie verwenden immer noch PHP und haben keine Pläne, etwas daran zu ändern.

Die Sache, die die Leute zu einer solchen Schlussfolgerung treiben könnte, ist, dass im Falle von Java (und ich denke auch mit .NET) das Scalling von Anwendungen ein Begriff ist, der in der Dokumentation und Literatur häufig vorkommt. Die meisten Anwendungsserver unterstützen eine Form von Clustering, die zusammen mit dem Anstieg der Popularität eine rasche Steigerung der Leistung ermöglicht. Im Falle von PHP müssen Sie den Cluster selbst aufbauen. Sie können es auf viele Arten tun, indem Sie verschiedene Komponenten verwenden, und Sie müssen ein oder zwei Kenntnisse über die Funktionsweise von PHP haben. Dies lässt die Leute wahrscheinlich denken, dass mit einem einzigen PHP-Server (und damit einer kleinen oder mittleren Website) eine Sackgasse für PHP ist.


3

Es gibt nicht nur Unternehmens-Webanwendungen. In der Unternehmenswelt haben Sie normalerweise ein vollständiges Unternehmenssystem, bei dem der Webpart im Vergleich zum gesamten System recht klein ist. Es gibt viele Systeme im Internet, die Stapelverarbeitung, Warteschlangen-Messaging, Unternehmensintegration, Gateways und vieles mehr ausführen. Event an der Spitze gibt es vielleicht nicht nur

Während PHP gut für das Web ist, ist es nicht so gut für die anderen Arten von verteilten Systemen. Und da Sie all diese Systeme in Java oder .NET ausführen, ist es einfach, den Webstack auf derselben Plattform und nicht in PHP zu erstellen.


1

Ich würde sagen, dass die Probleme mit PHP weniger auf die Leistung zurückzuführen sind als auf Sicherheitslücken in der Vergangenheit. Während es zweifellos möglich ist , eine Website mit einer bestimmten Größe oder Komplexität in PHP zu schreiben und dennoch die Sicherheit aufrechtzuerhalten, wird die Aufrechterhaltung der Sicherheit mit zunehmender Komplexität schwieriger.

Java hingegen wurde vom ersten Tag an mit zumindest einigen Sicherheitsaspekten entwickelt. Obwohl diese nicht vollständig zur aktuellen Bereitstellung passen (ursprünglich galt dies hauptsächlich für Applets, nicht für Servelets), bedeutet die Betonung, dass ihre Funktionen besser für die Erstellung von sicherem Code geeignet sind. Und natürlich ist es auch nicht stehen geblieben - da Applets derzeit größtenteils ein totes Thema sind, wurde Java neu definiert, um die serverseitige Rolle zu betonen, die es derzeit (größtenteils) einnimmt.

Da .NET zumindest versucht, fast direkt mit Java zu konkurrieren, bietet es in dieser Hinsicht fast die gleichen Funktionen und Möglichkeiten. Sie können darüber streiten (und die Befürworter beider Camps), ob Sun oder Microsoft diesbezüglich einen besseren Job machen, aber die einfache Tatsache, dass beide Teams wirklich versuchen , daran zu arbeiten, verschafft ihnen einen ziemlich gravierenden Vorteil gegenüber PHP Respekt.


0

1) Leistung: Mehrere Antworten hier werden in diesem Punkt irregeführt.
Mit dem Phalanger-Projekt (das ich in der Vergangenheit erfolgreich verwendet habe) können Sie C # -Code in PHP verwenden und umgekehrt oder vollständig von einer in die andere Sprache wechseln. Sie werden wahrscheinlich einige Änderungen vornehmen müssen, aber während sie weiter daran arbeiten, wird es immer besser.
Mein Punkt ist, sie fanden heraus, dass es einen durchschnittlichen Faktor von 2,5 Geschwindigkeit zugunsten von C # gibt (oder .NET im Allgemeinen würde VB das gleiche tun, es ist MSIL am Ende).
Schauen Sie sich ihre Tests mit Wordpress an, es hat viele Entwickler angezogen.

Jetzt haben wir ihn noch nicht gesehen, aber es gibt immer jemanden, der Ihnen sagt, dass FaceBook in PHP geschrieben ist. Falsch. Es dauerte ursprünglich, bis sie ihren Fehler erkannten und HipHop schrieben, um ihn in C ++ umzuwandeln.

EDIT: Anscheinend dass letzte Block ist unklar, also was ich gemeint ist Facebook IS in PHP geschrieben, aber HipHop macht es RUN wie C ++, allgemeine Geschwindigkeit zu verbessern, WEIL PHP langsam ist.

2) Sicherheit: Wie bereits erwähnt, hat PHP eine lange Geschichte von Sicherheitsproblemen.

3) Entwicklungszeit: Das Erstellen einer Website in PHP ist in der Regel einfacher, insbesondere mit den verfügbaren Frameworks und allen "Site Buildern". Eine gute, zuverlässige und sichere PHP-Website zu erstellen, ist eine andere Geschichte.


Was Facebook / HipHop angeht, ändert sich nicht viel. Sie schreiben immer noch PHP-Anweisungen, nicht wahr? Es gibt auch einen PHP to Java Compiler. Wenn ich meinen gesamten PHP-Code damit kompiliere, heißt das, dass meine Site wirklich in Java geschrieben ist?
Jacek Prucia

Es bedeutet nicht, dass es Java ist, es bedeutet, dass es als solches ausgeführt wird.
Louis Kottmann

Okay, Sie haben Recht, aber kann ich trotzdem behaupten, dass meine Site in PHP geschrieben ist? Wenn ja, kann jeder auch behaupten, Facebook sei in PHP geschrieben. Mit anderen Worten läuft alles darauf hinaus, wie Sie den Begriff "Programmiersprache" verstehen. Ist es nur die Kombination von gültigen Anweisungen oder ist es auch Laufzeitumgebung. Ich bevorzuge die erste Bedeutung und deshalb ändert sich für mich nicht viel an der HipHop-Sache. So ziemlich bin ich der FaceBook-Typ, den du erwähnt hast :)
Jacek Prucia

Okay, ich werde es klarer machen. Ich bin mir jedoch ziemlich sicher, dass die meisten Leser meinen Standpunkt verstanden haben.
Louis Kottmann

Es war kein Fehler, Facebook ursprünglich in PHP zu schreiben. Als sie feststellten, dass es nicht mit der Skalierbarkeit mithalten konnte, haben sie das Problem mit HipHop behoben. Ich denke, dies bedeutet, dass die Verwendung von PHP eine sehr gute Option für alle Websites ist. Allerdings verwendet Slashdot gerade Perl und es hat das Skalierungsproblem gelöst, Wikipedia verwendet einfaches PHP und es hat auch keine Skalierungsprobleme.
Gbjbaanb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.