6 Antworten

PHP in Kombination mit Apache ist - im Vergleich zu vielen anderen Lösungen - leider absolut ineffizient:

Bei einigen hundert parallelen Requests, die dynamischen Content erzeugen, ist der Flaschenhals damit schon erreicht. Und ein paar Hundert oder höchstens Tausend Requests pro Server sind nicht wirklich viel.

Zum Vergleich: Bei uns haben wir teilweise mehr als eine Million parallele Anfragen pro Maschine! Dafür wären weit mehr als 1000 PHP-Server nötig. Allerdings muss ich ehrlicherweise zugeben, dass es sich dabei um eine Eigenentwicklung handelt. Aber genau das ist es, was große Unternehmen auch machen. (Wir haben uns da von Akamai inspirieren lassen, aber das nur am Rande.)

PHP, ASP, JSP, Rails, etc. sind alles schicke Sachen für KLEINE Benutzergruppen. Will man damit mehr User betreuen, muss man richtig dicke (und damit teure) Server hinzumieten.

Trotzdem haben all die genannten, insbesondere PHP, enorme Vorteile gegenüber Eigenentwicklungen. Alleine schon die Vielfältigkeit und Einsteiger-Freundlichkeit!

PHP bietet allerdings keinerlei Möglichkeit für effizientes IPC, geschweige denn die Möglichkeit der Parallelisierung. Allgemein bietet PHP kaum Features, die man für große Webdienste benötigt.

Das spiegelt ja auch der Name "Personal Home Page Tools" wider. Es war niemals für große Umgebungen gedacht, und ein dortiger Einsatz ist in gewissem Maße ein "Missbrauch", den man ohne zusätzlichen Bloat von Caches aller Art niemals durchführen könnte.

Außerdem ist die API absolut wirr und inkonsistent. Fast jede einzelne Seite der Dokumentation enthält grobe Fehler, Unklarheiten, Widersprüche oder einfach vollständig fehlende Erklärungen.

PHP ist damit eindeutig der Spitzenreiter der "unschönen Programmiersprachen" und wird nicht umsonst der "dumme Bruder von Perl" genannt. Das ist zwar gemein, und ich würde nicht so weit gehen, da ich PHP durchaus zu schätzen weiß, aber erstens bestimmt der Einsatzzweck das Werkzeug, und zweitens kann man mit PHP alleine nun mal nicht jedes Szenario erschlagen, egal wie begeistert man von dieser Sprache ist. Oder auch nicht. :)

Im Endeffekt kann man einen Cluster mit allem aufbauen, aber im Punkto Effizienz versagt PHP dabei kläglich. Vor allem, verglichen mit Alternativen. Allerdings sind JSP, ASP und Rails auch nicht wirklich der Renner. Ich sage nur "WebSphere" ... also "gefühlt" für jeden Client ein eigener Server ... pfff. :)

Ich habe mal ein Programm geschrieben, welches für die sinngemäß gleichen Testfälle in PHP und in unserer Eigenentwicklung die ausgeführten Prozessorbefehle zählt. Das Ergebnis war immer gleich: Im Schnitt lag PHP bei ca. 10 Mio. Instruktionen für Dinge, die bei uns weniger als 1000 benötigt haben. Wohlgemerkt, NACH dem Parsen des Quelltextes beim Ausführen des im Speicher gehaltenen Kompilats!

Und eine weit über Zehntausendfache Steigerung der Geschwindigkeit kann man nicht so einfach wegdiskutieren. :)

Wir hatten ähnliches auch mit Python probiert, und festgestellt, dass das Parsen und Laden der Module (logischerweise) ca. 100 mal langsamer ist, als bei PHP, dafür aber die Ausführungsgeschwindigkeit im Endeffekt einige hundert mal schneller. Für einen Server, der ja nicht ständig neue Module laden muss, bedeutet dies, dass Python hier schon effizienter ist.

Setzt man Python hingegen als CGI ein, werden bei jedem Request die ganzen Module durch den Parser genudelt, und der Server mutiert zur Schnecke. Das ist dann ungefähr so, als würde man Joomla ohne Caches und Optimizer laufen lassen, sodass bei jedem Request einige MB an PHP Code geparst werden müssen. So etwas macht natürlich keiner!

Lange Rede, kurzer Sinn: PHP ist einfach zu ineffizient.

Ja, PHP ist praktisch, leicht zu erlernen und überall zu haben, aber genau diese Punkte spielen bei den Firmen aus deiner Frage keine Rolle, sondern interessieren nur "Bäckermeister Heinz", wenn er sich um seine "Homepage" kümmert.

Für Google zählt, ob ein einziger Nicht-PHP-Server das leisten kann, was 1000 PHP-Server auch können, und dann entscheidet sich Google natürlich für ersteren Fall.

Außerdem ist PHP viel zu starr und kaum konfigurierbar. Für jeden Murks benötigt man ein eigenes Servermodul, was die ganzen Abhängigkeiten nochmals aufbläht.

Man kann z. B. anhand der Reihenfolge der Reuqest-Header sehr zuverlässig erkennen, ob man es mit einem Crawler, oder einem Browser zu tun hat, und zwar auch dann, wenn User-Agent, Referer, usw. gespoofed wurden. Aber man kommt an diese Reihenfolge mit reinem PHP gar nicht ran! Wenn man jetzt die gängigen vier oder fünf Apache-Module kaskadiert, geht alleine dadurch schon die Performance in die Knie.

Es gibt noch mehr Nachteile, aber ich will jetzt mal nicht den Rahmen sprengen und mache hier mal Schluss. :)

PS: Auch GF benutzt PHP "nur" für das Frontend, und setzt im Backend Scala ein! Einfach, weil PHP diese Last, selbst mit Loadbalancern und Caches, niemals bewältigen könnte. Also das geht natürlich schon, aber dann braucht man deutlich mehr Server, und das wird dann wieder zu teuer! :)

Antwort bewerten Vielen Dank für Deine Bewertung

Wer sagt denn, dass PHP "die beste Sprache zur Webentwicklung" ist? PHP ist am weitesten verbreitet, aber "am besten"? Meiner Meinung nach verwenden vor allem Programmieranfänger PHP völlig unstrukturiert, bei vielen alternativen Programmiersprachen im Backend ist man zu mehr Ordnung und sauberer Programmierung gezwungen.

Twitter und Google haben mit unglaublichen Datenmengen zu kämpfen, da bringt PHP zuviel Overhead mit sich und ist deswegen zu langsam. Bei Facebook war das auch der Grund, warum die "HipHop" entwickelt haben

https://de.wikipedia.org/wiki/HipHop

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PeterKremsner
15.04.2016, 15:29

Ich würd jetzt PHP nicht gerade nur den Programmieranfängern zuordnen, weil man kann mit PHP auch schön Strukturierten Code machen.

Außerdem finde ich ist PHP für kleine und mittlere Unternehmen ausreichend und ich finde es hat auch einen gewissen Reiz.

Sobald es aber zu großen Datenmengen kommt ist PHP ungeeignet, dann muss man zu anderen besseren Programmiersprachen greifen.

Trotzdem muss man PHP zu gute halten, dass es zum erstellen von HTML als "Präprocessor" von diesem wirklich gute Dienste leistet. aber für Berechnungen oder Datenverarbeitung ist es leider ziemlich ungeeignet.

1
Kommentar von iParadox15
15.04.2016, 15:37

Mit PHP kann man auch auf professioneller Umgebung programmieren.

0

Hallo timt3011,

Interessante Liste die du da gefunden hast!

Ich kann es mir nur so erklären das die Frameworks anderer Programiersprachen deutlich effektiver und dynamischer mit (und in dieser Liste definitiv der ausschlag gebende faktor) BIG DATA umgehen können.

Das wäre für mich ein Denkansatz. Habe mich jedoch noch nicht genug mit allen Frameworks auseinander gesetzt um die Vorteile/Nachteile so abzuwägen, dass ich hier eine genauere Erklärung liefern könnte.

LG

Antwort bewerten Vielen Dank für Deine Bewertung

wenn du php als die beste programmiersprache zur webentwicklung bezeichnest so hast du wenig von der programmierwelt gesehen. Jede sprache hat so seine stärken und schwächen, aber das php nicht von den grossen benutzt wird stimmt auch nicht. Facebook, Wikipedia, yahoo basiert auf php. Kleiner exkurs in internetgeschichte: Google benutzt viel python (eigt benutzen die das komplette Programm)  weil python älter als php ist (php war 1995 keine programmiersprache, wie heute,  sondern eine einfache templatesprache)  und twitter (damals, heute läufts in java) sowie github basieren/basierten auf ruby wegen rails und der erwachsenen und professionellen gems Infrastruktur, die kam in php mit packagist und composer erst  seeehr spät (ab 2013) .  Amazon und ebay basieren auf java. 

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von TeeTier
16.04.2016, 04:12

Die Querries einer Google-Suche sahen an der Grenze der 2000er Jahre so aus:

/search.dll?q=abc

Zumindest am Anfang wurde demnach wohl alles (vermutlich) in C++ geschrieben und (ziemlich sicher) auf einer Windows-Kiste betrieben.

Das war aber noch zu einer Zeit, als selbst die meisten ITler noch kein Google kannten. Ich hatte damals durch Zufall von dieser "neuen" Altavista-Alternative gehört, und wollte sie mal ausprobieren. :)

0

Naja Facebook verwendet noch PHP in der HHVM.

Aber der Grund dafür ist, PHP ist nicht sehr Effektiv und im Vergleich zu kompilierten Sprachen, oder auch vielen anderen Skriptsprachen, relativ langsam.

So fehlt PHP zum Beispiel bis heute ein JIT Compiler.

Zudem ist PHP nicht wirklich komplett und ändert sich zu stark, so gab es zB beim Wechsel von PHP4 auf 5 sehr viele Webseiten, die einfach nicht mehr funktioniert haben, weil die Syntax geändert wurde.

PHP Fehlen zudem viele nützliche Eigenschaften die die anderen Programmiersprachen haben. Die Programmierung von Sockets ist in PHP der reinste Horror, weil Datenströme immer als Strings daher kommen und das ist zur Verarbeitung von diesen sehr Umständlich.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Odorwyn
15.04.2016, 15:20

Mich schüttelt es wieder wenn Ich Sockets und PHP in einem Satz lese :D
Wie recht du hast...

3
Kommentar von 3v1lH4x0R
15.04.2016, 15:26

FB verwendet zwar dir HHVM jedoch KEIN PHP, sondern Hack.

1

PHP hatte und hat so seine Probleme. Das macht es nicht per se zu einer schlechten Sprache, aber für manche Dinge ist es dann womöglich einfach nicht besonders gut geeignet.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ceevee
15.04.2016, 16:27

aber für manche Dinge ist es dann womöglich einfach nicht besonders gut geeignet.

Zum Beispiel zum programmieren? :P

1

Was möchtest Du wissen?