2012-03-24 7 views
7

Ich habe immer mit Apache, MySQL und PHP gearbeitet. Ich möchte irgendwann zu Python/Django oder Ruby/Ruby on Rails verzweigen, aber das ist eine andere Diskussion. Zwei großartige Dinge über Apache, MySQL und PHP sind alle drei sind allgegenwärtig und es ist sehr einfach, eine Website zu starten. Richten Sie einfach einen virtuellen Apache-Host ein, importieren Sie die Datenbank in MySQL und kopieren Sie die PHP-Dateien auf den Server. Das ist es. Das ist alles, was ich je getan habe und alles, was ich je gewusst habe. Bitte beachten Sie dies.Wie kann ein LAMP Guy WebSockets einfach implementieren?

In diesen Tagen wird es immer wichtiger für Websites, Daten in Echtzeit an die Benutzer zu liefern. Nutzer erwarten dies auch aufgrund der Live-Natur von Facebook und Gmail. Dieser Effekt kann mit Ajax-Abfragen gefälscht werden, aber das hat viel Overhead, wie erklärt here. Ich möchte WebSockets verwenden. Nun erinnere dich daran, dass ich immer ein LAMP-Typ war. Ich habe Websites nur mit der oben beschriebenen Methode gestartet. Also, wenn ich zum Beispiel eine CakePHP-Site habe, wie kann ich die Funktion von WebSockets "hinzufügen"? Muss ich einen anderen Server oder etwas installieren oder kann ich mit Apache reibungslos arbeiten? Wird es Apache 2.4 benötigen? Bitte erklären Sie mir den Vorgang und denken Sie daran, dass ich nur über LAMP weiß. Vielen Dank!

Antwort

4

Eine wichtige Sache zu beachten, ist, dass ein Echtzeit-WebSockets-Server "lange läuft", so dass es Zeug an die Kunden schieben kann. Im klassischen LAMP-Setup erzeugt Apache bei jeder Anfrage einen PHP-Interpreter. Zwischen den Anfragen wird der PHP-Interpreter nicht ausgeführt, und der einzige zwischen den Anfragen aufbewahrte Protokollstatus sind Sitzungen.

Eine nette Eigenschaft der LAMP-Methode ist, dass Speicherverwaltung einfach ist. Sie reservieren implizit genau den Speicher, den Sie benötigen, und es wird automatisch zurückgewonnen, wenn die Anfrage abgeschlossen ist und der PHP-Prozess beendet wird. Sobald Sie möchten, dass der Server weiter läuft, müssen Sie die Speicherverwaltung in Betracht ziehen. In einigen Fällen, wie C++, verwalten Sie die Zuordnung und Freigabe explizit. In anderen Sprachen wie Java oder Javascript haben Sie Garbage Collection. In PHP schmeißt man alles weg und beginnt mit einer neuen Slate bei jeder Anfrage.

Ich denke, Sie werden es schwer haben, lange laufende Server mit etwas wie Cake oder einem anderen klassischen PHP-Framework zu machen. Diese Frameworks arbeiten grundsätzlich mit einer HTTP-Anfrage und verwandeln sie in eine HTTP-Antwort.

Mein Rat ist, dass Sie in etwas wie Node.JS und SocketIO suchen sollten. Wenn Sie Javascript beherrschen oder lernen möchten, können Sie mit diesen Technologien Server und Clients in Echtzeit einfach implementieren. Bei Bedarf können Sie einen Reverseproxy wie nginx ausführen, damit Ihr vorhandener LAMP-Stack einige Anfragen erhält und ein oder mehrere NodeJS-Server einige erhalten.

Diese Antwort kam etwas flauschige, aber ich hoffe, dass es hilft ein wenig .. :-)

+0

Überprüfen Sie auch https://github.com/davidcoallier/node-php und damit verbundene Gabeln. Viele http-Implementierungen im Knoten gibt es auch, aber das ist die Schönheit von Knoten - es muss nicht * http sein. Sie könnten sich wahrscheinlich andere Echtzeitprotokolle wie rtmp ansehen, wenn Sie einen Consumer für das Client-Ende garantieren könnten (wie Flash oder Flash als clientseitiger Proxy für das Skript) – frumbert

+0

p.s. vor dem Einspringen und Entscheiden von node.js ist jedoch die Lösung, Nase herum und lesen Sie über beide Seiten der Lösung, z. : http://teddziuba.com/2011/10/node-js-is-cancer.html – frumbert