Kann man Node.JS mit PHP und einer Datenbank kombiniert einsetzen?

4 Antworten

So habe mir überlegt, das ganze in PHP umzusetzen mit Websockets, erst wenn man merkt, dass die Seite die Kapazität zwecks Leistung erreicht hat, werde ich wohl, das ganze je nach Kenntnisstand in Node.js upgraden. Vielleicht lasse ich das mir dann auch programmieren. 

Hallo, 

spannende Frage, also Du würdest wahrscheinlich frameworks einsetzen die auf node.js basieren, z.Bsp. meteor oder socket.io

Wie viele Leute Du damit bedienen kannst hängt nicht zuletzt an der Hardware die Du zur Verfügung hast, nicht nur an den frameworks. Eine Integration mit PHP geht technisch zwar würde ich aber nicht tun, weil deine software damit weder "schneller" noch einfacher wird. Welches Problem willst Du mit PHP lösen, das Du nicht auch mit einem JS framework lösen kannst?

Im Gegenteil, in der JS Welt kriegst du mit Redis z.Bsp. sogar eine Datenbank. Node.js basierte frameworks für client und server , damit nur eine Sprache, guter crowd support, gute IDE und realtime Fähigkeit.

Viel Spass.

P.s. Ach ja, bevor Du nun deine Zeit/Geld in die Programmierung in etwas investierst, das veilleicht gar nicht ankommt, könntest Du ein Problem/Solution fit machen, siehe "lean startup", mir hat das jüngst geholfen Geld zu sparen indem ich eine SW die ich cool fand eben gar nicht erst bauen musste......


wroar 
Fragesteller
 13.12.2016, 22:30

Ich verstehe das mit Problem/Solution nicht, 

Weil ich denke, dass man mit JS (+Frameworks) kein Coinssystem entwickeln kann. Ich möchte einen interaktiven Marktplatz erstellen, Nutzer können Anzeigen erstellen. Andere Nutzer sehen diese Anzeigen und können die Anzeige öffnen, und z.B. kommentieren, alles passiert in Echtzeit ohne, dass man die Webseite neuladen muss. So kann es passieren, dass 20 Anzeigen in einer Sekunde erstellt werden. Die Älteren werden von den Neuen verdrängt. Diese Anzeigen kann man dann mit den Coins dann z.B. hochpushen, farblich hervorheben. Mit Premium hat man die Möglichkeit, diese an Nutzer als "Werbung" zuschalten bzw. als Anmerkung / Notiz, irgendwo auf der Webseite. Und Coins verdient man indem man Aktionen erledigt. Ich hoffe, dass ist mal verständlich erklärt. 

0

Das klingt ehrlich gesagt nach einer sehr unsauberen Lösung.

Im Gegensatz zu PHP mit viel Frickelarbeit skaliert Node.js aber exorbitant besser, weshalb ich von vornherein auf PHP verzichten würde. (Wenn du sowieso Node.js einsetzen willst, bietet dir PHP rein gar nichts an Mehrwert.)

Davon abgesehen, dass deine 100k User vermutlich etwas hochgegriffen sind, kann man alleine schon mit stink normalen HTTP-Headern eine ganze Latte an Servern einsparen, und mit vernünftigem Load-Balancing und Cache-Proxies nochmal viel mehr.

Ich habe vor einigen Jahren mal einen Linux-Server gebaut, für den ich unter anderem einen Speichermanager, einen Netzwerktreiber und einen Netzwerkstack selbst entwickelt hatte, und das Ding hat fast 5 Mio. parallele (!) Zugriffe problemlos verkraftet.

Robert Graham hatte mich damals durch einen Vortrag auf die Idee gebracht, als er in einem Vortrag davon berichtete, wie er einen Server entwickelt hat, der auf 10 Mio. parallele Verbindungen ausgelegt ist:

http://c10m.robertgraham.com/p/manifesto.html

Ich muss dazu sagen, dass sich Grahams Ansatz auf statische Inhalte beschränkt, bei mir aber viele Dinge dynamisch generiert wurden. Hatte aber auch bessere Hardware und vor allem mehr RAM eingesetzt.

Deshalb weiß ich jetzt nicht, auf was sich deine 100k User beziehen. Auf eine Sekunde? Eine Minute? Eine Stunde? Einen Tag? Eine Woche? Einen Monat? Ein Jahr? :)

Wie auch immer, lass dir auf jeden Fall gesagt sein, dass du mit PHP höchstwahrscheinlich nicht mal auf ein Tausendstel dessen kommen wirst, was Graham beschreibt.

Node.js skaliert auf jeden Fall besser, und im Grunde genommen musst du bei mehr Usern nur mehr Server dazuschalten.

PS: Nimm dir bitte an der GF-Infrastruktur kein Beispiel. Die machen hier sehr viel falsch, was man im besten Fall daran sieht, dass die Website so oft down ist.


wroar 
Fragesteller
 13.12.2016, 22:39

Vielen Dank für die Anregung. 

Klar 100k Nutzer sind hochgegriffen, aber es kann natürlich so sein. Gerne möchte ich erstmal die Website in Deutschland vermarkten. Vielleicht kommen auch keine 100k Nutzer zusammen aber 5k-10k in Sekunden ist gedanklich vorstellbar., erst wenn ich international Marketing mache - dann schon. 100k Nutzer in Sekunden, siehe Twitch.tv, oder andere Streamseiten. Möchte ungern das Projekt programmieren und später läuft nichts, weil falsche Technologie gewählt o.ä. Und nein ich möchte nicht, das neue Facebook werden - habe ich auch nicht vor :D 

0
abbrechen  27.01.2017, 02:44

Was deine Idee des "Nicht-Mehr-Ladens" angeht und wir bei NodeJs angekommen sind, dann versuche mal eine Kombination aus AngularJs, Webpack und RethinkDB soll wohl ganz gut sein. Angular bietet dir die Möglichkeit, den Content seiner gesamten Seite zu gleich zu laden, so dass das Wechseln zwischen den Pages nahtlos ist. Das html wird dabei über deine js-Dateien generiert. Webpack bietet dir dazu die Möglichkeit, deine Dateien in einer zu bündeln, sowohl css (ein sass-loader ist möglich) als auch JavaScript. Und da dein html ohnehin via Angular generiert wird, könntest du deine gesamte WebApp über eine komprimierte Datei in deine Index einbeziehen.
Auf deinem Server liegen natürlich weit aus mehr Dateien. ;)
Und RethinkDB habe ich zwar bislang nicht ausprobiert, aber soll wohl eine gute realtime Arbeit leisten.

0

Hi, selbst hab ich damit zwar noch nicht gearbeitet, aber möglich ist es offenbar, hier wird genau so ein Fall / Beispiel beschrieben (Webseite auf Basis von PHP / MySQL und dazu Node.js für Echtzeitanwendungen): 
https://goo.gl/PzD7eT