Ist native PHP-Unterstützung für Web Sockets verfügbar?

72

Auf der Suche nach Hello World Type Beispiel für die Implementierung von Web Sockets:

Hier ist Socket Create Referenz von php.net, aber dies sieht niedriger aus als Web Sockets.

Ich möchte diese Web Sockets wie hier auf caniuse.com gezeigt verwenden, die jetzt in allen neuen Hauptbrowsern implementiert sind.

Eine Google-Suche ergab diese Nets.TutsPlus-Site, auf der ich den JavaScript-Beispielcode verwenden kann. Ich muss jedoch wissen, wie die Serverseite in PHP implementiert wird, nicht in Java, Ruby oder Node.js wie im Beispiel.

Ist PHP Socket Create relevant? Unterstützt PHP Web Sockets nativ? Ich denke, nur ein Punkt in die richtige Richtung für die PHP-Implementierung würde helfen.

Eigentlich hat das Tutorial einen defekten Link zu phpwebsockets ... ist dies die Bibliothek, die man verwenden sollte?

Websockets.org hat eine Testanwendung , aber keine Erwähnung von PHP.

Kev
quelle
1
Dies kann wahrscheinlich helfen: PHP Socket Programming, richtig gemacht
ChocoDeveloper
2
"PHP Websockets" gibt Ihnen viele Ergebnisse wie Googeln: socketo.me , flynsarmy.com/2012/02/php-websocket-chat-application-2-0 , code.google.com/p/phpwebsocket
scrappedcola
1
Ich sehe keine klare Richtung für die Vorgehensweise bei Web Sockets in PHP.
Verwechseln Sie bei Ihrer Suche keine Sockets mit Web-Sockets.
Brad
2
Ausgezeichnete Frage. Das möchte ich fragen.
Gunah Gaar

Antworten:

49

Es gibt keine native Unterstützung, da ein Standard-PHP-WebSocket-Objekt nativ verfügbar ist.

Sie müssen eine Bibliothek verwenden.

Als Nächstes müssen Sie berücksichtigen, wie der WebSocket-Server ausgeführt wird. Normalerweise läuft PHP in Apache, Nginx (über FastCGI) oder auf Microsoft IIS (über Fast CGI). Bei Apache und IIS kann dies ein Problem sein, da es nicht wirklich für dauerhafte Verbindungen wie WebSockets erstellt wurde. Bei Nginx bin ich mir nicht sicher. Aus diesem Grund werden die meisten PHP-WebSocket-Bibliotheken als eigenständige Bibliotheken erstellt, die als eigene Prozesse ausgeführt werden.

Sehen:

Hinweis: IE10 ist jetzt in Windows 8 veröffentlicht

Siehe auch: Ajax-Push-System

leggetter
quelle
5
Unterstützen Host-Anbieter dies? kleine ... wie godaddy.com, wiredtree.com, wähle ich im Wesentlichen nur eine Bibliothek aus und lege sie dann in meinen
Die allgemeine Antwort darauf lautet, dass Hosting-Anbieter es nicht mögen, wenn Sie dauerhafte Verbindungen herstellen - und definitiv nicht potenziell 100 oder 1000 dauerhafte Verbindungen. Persönlich denke ich nicht, dass die Verwendung von selbst gehostetem WebSocket auf Shared Hosting für eine Weile eine Option sein wird. Es lässt sich sicherlich nicht besonders gut in den Standard-LAMP-Stack IMHO integrieren. Im Moment denke ich, dass ein gehosteter Dienst wie Pusher (für den ich arbeite) die beste Lösung für Entwickler auf einem gemeinsam genutzten Hosting-LAMP-Stack ist.
Leggetter
2
Ich habe mich beim technischen Support von Wired Tree erkundigt und sie sagten, es sei in Ordnung.
1
@leggetter Kannst du einen Link zu anhaltendem Verbindungshass bereitstellen? Meine Bandbreitennutzung sank, als ich zu 100% Ajax wechselte. Es fiel ungefähr mit der gleichen Geschwindigkeit, nachdem es 100% Websocket gegangen war. Ich bin also sehr neugierig. Danke im Voraus!
5
@Gracchus - Was Leggetter sagt, ist ziemlich allgemein bekannt. Das Öffnen von Steckdosen nach außen bringt viele Probleme mit sich, insbesondere wenn der Dienst häufig von unerfahrenen Programmierern entwickelt wird. Sie haben Probleme mit der Prozessverwaltung, der Verbindungsverwaltung, Sicherheitsproblemen (jeder offene Port ist im Grunde eine Tür zum System) usw. Wenn der Dienst nicht unterbrochen ist, nicht mit Sicherheitsproblemen behaftet ist und effizient ausgeführt wird, Es wird im Grunde ein konkurrierender Dienst für den Anbieter. Nicht viele Geschäftsmodelle sind für so etwas offen.
JSON