Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Sockets - Viele Clients handeln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Sockets - Viele Clients handeln

    Hi,

    Ich möchte mit AJAX für eine Chat Software eine Echtzeitkommunikation zwischen Server und Client herstellen.

    Deshalb dachte ich mit PHP einen Server zu bauen der die HTTP Verbindung zum Client offen hält und ich zu den offenen Verbindungen der Clients Nachrichten sende.
    Soweit kein Problem nur....

    Wie handle ich am Besten viele Clients?
    Ich hatte die Idee das ich die Clients auf verschiedene Serverprozesse verteile.
    Also nach dem Motto wen Zugriff auf 0.realtime.example.com dann Serverprozess 0 usw.

    Nur ein Problem.. Wie löse ich es am Performantesten wen z.B. ein Client auf Server 0 eine Nachricht an einen Client auf Server 1 Senden möchte.

    abc_server0 > 0.xyz.example.com (Nachricht wird verarbeitet. Antwort gesendet) //An diesem Punkt muss die Nachricht ja an z.B. Server 1 weitergeleitet werden das dieser die Nachricht an dem gewünschten Client ausliefern kann.
    1.xyz.example.com > maxi_server1

    Wenn ich jetzt aber die Kommunikation zwischen den Servern auch mit Sockets regle, habe ich dann hätte ich doch gleich alles ein Script machen lassen können oder?

    Oder ich setze einen Kommunikationsserver ein also:

    Code:
    Cleint_auf_Server1 > Server1 (Verarbeitung) > Kommunikationsserver > Server2 > Client_auf_Server2
    Cleint_auf_Server1 < Antwort

    Was sagt ihr? Wie soll ich das am Besten Lösen? Oder gibt es schon fertige Sachen die ich nutzen kann?
    CEO @ XTAIN oHG

  • #2
    Versteh kein Wort. Bin schon hier ausgestiegen
    Deshalb dachte ich mit PHP einen Server zu bauen der die HTTP Verbindung zum Client offen hält und ich zu den offenen Verbindungen der Clients Nachrichten sende.
    Soweit kein Problem nur....
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Ich baue eine Serversoftware mit PHP die auf z.B. Port 81 hört und die Grundlagen des HTTP Protokoll kann.

      Und dann rufe ich von der Client Seite per AJAX eine angeblich vorhandene Seite auf. Der Server nimmt das entgegen liefert aber nichts aus!! er hält die Verbindung offen. Sobald neue Nachrichten vorhanden sind werden sie an den Client gesendet... Die Verbindung wird eine gewisse Zeit offen gehalten und nach Abbruch durch den Server wieder neu Aufgebaut.

      So kann ich in fast Echtzeit Nachrichten versenden.
      CEO @ XTAIN oHG

      Kommentar


      • #4
        er hält die Verbindung offen.
        Das hast DU schon mal gesagt. Aber nicht, wie das gehen soll.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Let me google that for you

          Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Du meinst jetzt nicht mich, oder? Es geht hier um einen Server Push, nicht um Ajax-Polling. Aber er redet wohl von Server-Push, nicht von http://en.wikipedia.org/wiki/Comet_(programming) o.ä.

            die Grundlagen des HTTP Protokoll kann
            HTTP ist aber Request-Response-basiert. Ein Client (ausser ein Javaapplet o.ä.) kann aber keine Serverfunktion übernehmen.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Ne, dich meinte ich nicht. Jep, hab ich falsch verstanden, aber war mir auch nicht ganz klar, was er genau wollte!

              Wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                Aber er redet wohl von Server-Push, nicht von http://en.wikipedia.org/wiki/Comet_(programming) o.ä.
                Ich zitiere mal den von dir verlinkten Artikel:
                The concept predates the coining of the neologism, and is known by several other names, including Ajax Push, Reverse Ajax, Two-way-web, HTTP Streaming, and HTTP server push among others.
                Zitat von nikosch Beitrag anzeigen
                HTTP ist aber Request-Response-basiert.
                RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
                Letzter Satz in Abschnitt 8.1.1, zusätzlich definiert Abschnitt 14.10 ein "Connection: close" um eine offen gehaltene Verbindung explizit zu schließen bzw. das Schließen zu signalisieren.
                VokeIT GmbH & Co. KG - VokeIT-oss @ github

                Kommentar


                • #9
                  The use of inline images and
                  other associated data often require a client to make multiple
                  requests
                  of the same server in a short amount of time.
                  Und auch der Rest reden nicht von Serverseitigem Push, sondern beziehen sich immer auf Abfrage-Antwort, auch wenn Client hier mehrere Abfragen senden darf o.ä.

                  Aber wie auch immer, Du meinst halt Long Polling oder was auch immer. Stellt sich als nächste Frage, wozu Du Prozesse benutzen willst.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Ja es geht um Long Pooling.

                    Da ich denke das ein PHP Script das als Server arbeitet nicht sehr viele Clients abfertigen kann.
                    CEO @ XTAIN oHG

                    Kommentar


                    • #11
                      Was heisst "sehr viele Clients"? Wieso nicht eine sinnvollere Sprache nutzen (z.B. Java)?

                      Kommentar


                      • #12
                        das Sockethandling übernehmen Hardware und Betriebssystem, der Rest hängt von deiner Programmierung ab und PHP kann viele Clients abfertigen. Vorallem ein Chat ist nicht gerade komplex, Daten rein und zu allen anderen rausschieben
                        DevBlog|3D Online-Shopping|Xatrium

                        Kommentar


                        • #13
                          PHP kann viele Clients abfertigen. Vorallem ein Chat ist nicht gerade komplex, Daten rein und zu allen anderen rausschieben
                          Bislang hab ich nur Threads zum Thema "Chat" gelesen in denen davon abgeraten wurde einen Chat mit PHP umzusetzen.
                          Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                          Kommentar


                          • #14
                            ja da dieser Chat eben in den Meisten fällen nicht auf Sockets aufbaut.
                            Aber das ist im Moment egal.
                            Ich habe nämlich schon begonnen xD

                            Villeicht mache ich das irgendwann nochmal in einer anderen Sprache
                            CEO @ XTAIN oHG

                            Kommentar


                            • #15
                              ja da dieser Chat eben in den Meisten fällen nicht auf Sockets aufbaut.
                              woher weißt Du das ? was hat das damit zu tun ?

                              Basiert nicht jede Client/Server-Kommunikation per HTTP auf Sockets ?
                              Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                              Kommentar

                              Lädt...
                              X