PHP vs. Node.js – Gemeinsamkeiten & Unterschiede

Dieser Artikel vergleicht PHP mit Node.js, und beschreibt die grundlegenden Gemeinsamkeiten und Unterschiede der beiden Technologien. Die daraus folgenden Vor- und Nachteile werden in einem weiteren Artikel geschlussfolgert.

Zur besseren Unterscheidung und Lesbarkeit ist PHP blau und Node.js grün gefärbt. Letzteres ist nicht zu verwechseln mit einer Verlinkung, die hellgrün eingefärbt ist.

PHPphp

Die Scriptsprache PHP wurde erstmals im Jahr 1995 der Öffentlichkeit vorgestellt, und ist Heute die meistverwendete Sprache für dynamische Webseiten. Ruft man eine mit PHP betriebene Website auf, so leitet der zugehörige Webserver die Anfrage typischerweise an den PHP-Interpreter weiter. Dieser generiert dann die aufgerufene Webseite und gibt sie dem Besucher aus.

Node.jsnodejs-dark

Node.js ist eine server-seitige Plattform für Netzwerk- und insbesondere Webanwendungen, und verwendet die Scriptsprache JavaScript, die auch in modernen Webbrowsern zum Einsatz kommt. Der Kern von Node.js ist die Laufzeitumgebung V8, welche den auszuführenden JavaScript-Code zunächst in nativen Maschienencode übersetzt und diesen dann anschließend ausführt. Die Entwicklung von Node.js begann im Jahr 2009.

Gemeinsamkeiten #

Sowohl mit PHP als auch mit Node.js lassen sich dynamische Webseiten und Webanwendungen realisieren. Beide können kostenlos verwendet werden, und ihr Quelltext ist ebenso für jedem einsehbar (Open-Source). Der PHP-Interpreter und die Node.js-Plattform sind in den Programmiersprachen C und/oder C++ geschrieben, liegen also als kompilierte Binärprogramme auf dem Server vor.

Unterschiede #

Es ist wichtig zu verstehen, dass es sich bei PHP nur um eine Scriptsprache handelt. Eine Scriptsprache kann zwar eine Website generieren, aber sie nicht selbst an den Besucher ausliefern. Darum wird typischerweise ein Webserver zwischen den Besucher und PHP geschaltet. Ruft der Besucher nun eine mit PHP betriebene Website auf, startet der Webserver das PHP-Script, welches die angeforderte Seite dann generiert. Abschließend wird die fertig generierte Website an den Besucher zurück gesendet.

Node.js ist hingegen keine Scriptsprache, sondern eine Plattform, die wiederum die Scriptsprache JavaScript enthält. Neben JavaScript besteht Node.js aber auch aus Modulen, die man innerhalb der Scriptsprache verwenden kann. Die Plattform wird mit einer Reihe von Basis-Modulen ausgeliefert, welche für alle grundlegenden Aufgaben zuständig sind. Eines dieser Basis-Module heißt http, es ist – wie der Name schon verrät – für das HTTP-Protokoll, und somit für Webseiten und -Anwendungen zuständig.

In einer Node.js-Anwendung ist die Anwendung selbst der Webserver, eine zusätzliche Webserver-Software ist daher nicht erforderlich. Trotzdem könnte man einen extra Webserver (als sogenannten Proxy) dazwischen schalten, z.B. als Lastverteiler oder um eine bessere Performance bei statischen Dateien wie Bildern zu erreichen (caching).

Programm-Ablauf #

PHP generiert typischerweise bei jedem Script-Ablauf genau eine Seite. Wenn eine Webseite also 10 mal aufgerufen wird, so wird das PHP-Script auch 10 mal ausgeführt.

Eine Node.js-Anwendung wird hingegen nur einmal gestartet, und würde dann alle 10 Anfragen in einem Ablauf entgegen nehmen. Dieser Ablauf ermöglicht es Daten zwischen mehreren Anfragen einer Variable zu teilen, was mit PHP so nicht möglich ist. In PHP müsste man hierfür eine Datenbank oder sonstige Erweiterung nutzen, welche die Daten zwischen den einzelnen Script-Abläufen teilt.

I/O-Zugriffe #

Ein weiterer Unterschied zwischen PHP und Node.js besteht darin, dass PHP synchron und Node.js – oder besser gesagt die Scriptsprache JavaScript – asynchron arbeitet.

Das heißt, ein PHP-Script läuft immer von oben nach unten ab. Wenn nun aber ein I/O-Zugriff (Eingabe und Ausgabe) wie z.B. eine Datenbank-Abfrage stattfindet, so wird das Script angehalten bis die Datenbank antwortet. Der restliche Teil des Scriptes muss also warten und wird erst dann ausgeführt, wenn PHP die Antwort erhalten hat.

Mit der Node.js-Plattform sieht es anders aus: Zwar läuft ein Script in JavaScript prinzipiell auch von vorne nach hinten ab, findet jedoch ein I/O-Zugriff statt, so besteht die Möglichkeit den Zugriff an eine Rückruf-Funktion (im englischem Callback-Function) zu binden. Sobald die Datenbank antwortet, nimmt die zugewiesene Funktion die geantworteten Daten entgegen. In der da zwischen-liegenden Zeit läuft das Script weiter und es können andere Dinge getan werden, oder auch mehrere Abfragen parallel stattfinden.

Schlusswort #

Soweit die grundlegenden Fakten. Nachfolgend wird ein weiterer Artikel veröffentlicht, der einen Überblick aus den hieraus folgenden Vor- und Nachteilen von PHP und Node.js gibt.

Für Fragen, Ergänzungen oder Kritik kann wie immer die Kommentar-Funktion unter diesem Artikel genutzt werden.

VN:F [1.9.22_1171]
Bewertung: 4.8/5 (20 Bewertungen)
PHP vs. Node.js – Gemeinsamkeiten & Unterschiede, 4.8 out of 5 based on 20 ratings
Regelmäßige Beiträge über Node.js

nodecodeAbonniere den kostenlosen NodeCode-Newsletter, und bleibe auf dem laufenden über neue Beiträge zum Thema Node.js. Darunter:

  • Informationen und Neuigkeiten rund um Node.js und zugehörigen Modulen
  • Vorstellung von interessanten Frameworks und Bibliotheken
  • Anleitungen und Tutorials zu Node.js und weiterführenden Technologien
  • Sowie vieles mehr...

schon 4 Kommentare gehe zum kommentieren

  1. Gerriet /

    Das Problem bei node.js ist aber das Hoster nicht so leicht drauf umstellen wollen oder können. Mein Hoster zum beispiel sagt dazu das dieser nicht auf „normalen“ Webspace läuft.
    Da hat PHP doch die grössere Vorteile, wenn es um die Lauffähigkeit geht ..

    1. NodeCode / Beitrags-Autor

      Stimmt, dieses Thema wurde im darauf folgenden Artikel auch behandelt: PHP oder Node.js? – Vorteile und Nachteile

      Hoster für Node.js findest du übrigens hier.

  2. Johanna /

    Hey, vielen Dank für den Artikel und die vielen anderen über nodejs. Auch wir haben uns viel mit den Vor- und Nachteilen dieser Technologie beschäftigt und dabei sind gute Tutorials und spannende Möglichkeiten herausgekommen, wie nodejs eingesetzt werden kann.

    Vielleicht helfen euch die Tutorials bei der weiteren Arbeit mit nodejs.:
    http://www.flyacts.com/blog/nodejs-xml-daten-verarbeiten/
    http://www.flyacts.com/blog/node-js-tasks-blockieren-mit-dem-modul-locker/
    http://www.flyacts.com/blog/nodejs-cronjobs-mit-agenda/
    http://www.flyacts.com/blog/nodejs-datei-upload-mit-busboy/
    http://www.flyacts.com/blog/nodejs-von-expressjs-3-zu-expressjs-4-die-neuerungen/

    Schaut doch mal drüber. Ich freue mich über Feedback.

    Beste Grüße
    Johanna

  3. Anonymous /

    Danke für die Gegenüberstellung, sehr hilfreich.

hinterlasse einen Kommentar