Ergebnis 1 bis 14 von 14

Thema: PHP/VanillaJS Long Polling Chat

  1. #1

    PHP/VanillaJS Long Polling Chat

    Ich würde gerne für ein Projekt einen Chat schreiben mit der Long Polling-Technik, habe dazu aber noch nichts Nützliches gefunden, was mich an dieser Stelle weiter bringt. WebSockets möchte ich nicht verwenden, da es nicht 100%ig kompatibel mit allen Browsern ist. Wie funktioniert nun Long Polling?
    Würde mich freuen, wenn mir hier jemand weiterhelfen könnte.
    Node.js | JavaScript ❤

  2. #2
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.139

    Re: PHP/VanillaJS Long Polling Chat

    Dein Problem ist das du offensichtlich noch nicht mal weisst was du vorhast, arbeite erst mal an der Zielsetzung.

    Der Startpost klingt nach Marketing bevor man ein Produkt hat. Irgendwas mit Blockchain!
    Für diesen Beitrag bedankt sich Jester
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  3. #3
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Ich kenne schon mein Ziel. Ich kann es hier gerne auch erklären, aber ich wollte nur grundsätzlich etwas über Long Polling erfahren. Mehr nicht. Andere Frage, kannst du mir weiterhelfen? Kennst du dich damit aus?

    Falls ja, angenommen ich habe ein Formular mit einer Textbox und einem Submitbutton. Darüber befindet sich das Chatfenster. Wie genau nutze ich nun Long Polling um an die Daten zu kommen, die mein Chatpartner abschickt? Also wie komme ich per AJAX (Long Polling) an meine Daten? Was muss ich beachten beim JavaScript und was beim PHP-Backend?
    Node.js | JavaScript ❤

  4. #4
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.139

    Re: PHP/VanillaJS Long Polling Chat

    Es scheint mir technisch keine bersonders elegante Lösung zu sein, zumindest nicht für einen Chat und Browser mochten es zumindest in der Vergangenheit nicht besonders.

    Es liegt einfach in der Natur der Sache das "Long Polling" nur die Wiederbelebung eines Problems ist das man vor Jahrzehnten durch den Pseudonversationsmodus gelöst hat. Zumindest sieht es für mich stark danach aus, insbesondere im Chat Kontext. Deswegen denke ich das du eben nicht weisst was du willst.
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  5. #5
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Es ist aber besser als jede halbe Sekunde die Daten per AJAX abzufragen, das würde den Server irgendwann überlasten. Ob elegant oder nicht, das lass mal meine Entscheidung sein. Oder kannst du mir eine Alternative außer WebSockets vorschlagen?
    Node.js | JavaScript ❤

  6. #6
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.139

    Re: PHP/VanillaJS Long Polling Chat

    Würde es eben nicht. Also lag ich richtig.

    Zumal 500ms sowieso schon meines Erachtens eine viel zu hohe Frequenz für einen chat ist. Die hälfte würds vermutlich tun.

    Erkundige dich mal etwas wie Ressourcenmanagement in modernendigitalen Systemen funktioniert, welche Probleme es gibt und wie sie gelöst wurden. Such mal "slowloris dos".
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  7. #7
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Also würdest du sagen, ich soll es einfach per AJAX ohne Long Polling machen und gut?
    Es geht mir darum, dass es fast Realtime sein soll.
    Node.js | JavaScript ❤

  8. #8
    Zeitreisender

    Administrator

    Avatar von drfuture
    Registriert seit
    Jul 2013
    Ort
    in der Zukunft
    Beiträge
    5.633
    ngb:news Artikel
    16

    Re: PHP/VanillaJS Long Polling Chat

    Welcher Browser soll den Probleme machen? Websockets werden doch schon länger von allen unterstütz?
    Sonst gibt es diverse Bibliotheken, auch für PHP https://github.com/wisembly/elephant.io die z.b. Auch fallback Szenarien anbieten nur für die die keine socket Verbindung hin bekommen. Socket.io ist da auch noch was...
    |_|D *`~{ Ich kenne deine Zukunft }~´* |_|D

  9. #9
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Also ich habe es im Chrome nicht zum laufen gebracht. Und da ich den Apache nicht neu konfigurieren kann auf meinem Webspace möchte ich das ohne WebSockets erstellen.
    Node.js | JavaScript ❤

  10. #10
    Zeitreisender

    Administrator

    Avatar von drfuture
    Registriert seit
    Jul 2013
    Ort
    in der Zukunft
    Beiträge
    5.633
    ngb:news Artikel
    16

    Re: PHP/VanillaJS Long Polling Chat

    Ja bei webspace dürfte das in der Tat nicht gehen, das liegt dann aber nicht am Browser.
    In diesem Fall hast du auch Probleme mit long polling. Im endefeckt sagst du dem Client ja du rufst die Chat.php auf und beim Aufruf der Seite holst du am Server die Infos aus der db, sendest sie und beendest aber nicht das Script sondern lässt es laufen / lässt die Verbindung bestehen. Du prüfst nun ständig nach neuen Einträgen (was übrigens ziemlich prozessorlastig ist) und sendest sie raus. Das geht aber nur solange bis die max execution Time erreicht ist die für deine Scripte gesetzt ist. Die kannst du bei webspace nicht ändern.

    Nebenbei ist die Anzahl der Verbindungen in diesem Fall ja eine pro chatter ... Jederzeit.
    Wenn du alle 500ms per Ajax frägst und deine ausführzeit bei 10na liegt (der Code zum nachladen sollte nur auth und nachgucken sein) dann hast du pro Sekunde zur selben Zeit weit weniger Verbindungen gleichzeitig als du chattet hast.
    Die gesamte Zahl an Anfragen ist erst mal weniger wichtig, das geht maximal auf den Traffic, nicht aber auf die Ressourcen.
    |_|D *`~{ Ich kenne deine Zukunft }~´* |_|D

  11. #11
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Zitat Zitat von drfuture Beitrag anzeigen
    Ja bei webspace dürfte das in der Tat nicht gehen, das liegt dann aber nicht am Browser.
    In diesem Fall hast du auch Probleme mit long polling. Im endefeckt sagst du dem Client ja du rufst die Chat.php auf und beim Aufruf der Seite holst du am Server die Infos aus der db, sendest sie und beendest aber nicht das Script sondern lässt es laufen / lässt die Verbindung bestehen. Du prüfst nun ständig nach neuen Einträgen (was übrigens ziemlich prozessorlastig ist) und sendest sie raus. Das geht aber nur solange bis die max execution Time erreicht ist die für deine Scripte gesetzt ist. Die kannst du bei webspace nicht ändern.

    Nebenbei ist die Anzahl der Verbindungen in diesem Fall ja eine pro chatter ... Jederzeit.
    Wenn du alle 500ms per Ajax frägst und deine ausführzeit bei 10na liegt (der Code zum nachladen sollte nur auth und nachgucken sein) dann hast du pro Sekunde zur selben Zeit weit weniger Verbindungen gleichzeitig als du chattet hast.
    Die gesamte Zahl an Anfragen ist erst mal weniger wichtig, das geht maximal auf den Traffic, nicht aber auf die Ressourcen.
    Das was du sagst stimmt nicht so ganz, das habe ich z.B. komplett anders verstanden (habe mich dazu natürlich ein bisschen eingelesen). Man prüft nicht ständig nach neuen Daten, man bekommt die Daten, wenn eine Änderung statt gefunden hat bzw. wenn ein neuer Eintrag in der Datenbank vorhanden ist, ansonsten nicht! Frag mich aber nicht wie man das technisch umsetzt, habe nur Theorie gelesen und kein Codebeispiel gesehen. Allerdings hast du natürlich mit der "Max Execution Time" recht, diese macht mir natürlich beim Long Polling ein Strich durch die Rechnung. Daran habe ich gar nicht gedacht.

    --- [2018-12-07 13:08 CET] Automatisch zusammengeführter Beitrag ---

    Habe mir jetzt überlegt das ganze mit NodeJS zu machen und mit WebSockets. Daher stellt sich gar nicht mehr die Frage nach dem Long Polling bzw. wie man das mit PHP macht. Danke für die Antworten.
    Geändert von CPU (07.12.18 um 13:19 Uhr)
    Node.js | JavaScript ❤

  12. #12

    Re: PHP/VanillaJS Long Polling Chat

    Short polling -> Anfrage "Gib mir Daten" ... einige ms später -> Da hast Du sie

    Long Polling -> Anfrage "Gib mir Daten, ich halte die Verbindung mal offen, und vergesse die Bedeutung eines Timeouts" .........viel später -> Da hast Du sie.

    Bei GitHub gibt es einige Projekte dazu (z.B. https://github.com/fidelisrafael/ajax-long-polling-chat )
    Gruß
    braegler

  13. #13
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.139

    Re: PHP/VanillaJS Long Polling Chat

    @CPU:
    Deswegen mien Hinweis darauf dich mal zu erkundiogen wie Digitaltechnik funktioniert. Insbesondere CPUs kennen nativ kein warten. Wenn du tatsächlich warten würsest würde auch die Reaktionszeit massiv leiden. Effektiv bedeute Longpolling daher auf beiden Sieten deutlich mehr Last für schnellere Reaktionen.

    Wenn digital irgendwas wartet braucht es einen externen Anstoß, also kann der externe Anstoßer nicht warten. Wenn ein Client eine Verbindung zu einem Server aufmacht und sagt lass offen. Dann müssen beide Seiten und alle Instanzen dauernd nach Updates checken.

    Das verbirgt der Abstraktionslayer lediglich vor dir. Das heisst nicht das es nicht da ist. Zusätzlich muss für offene Verbindungen Permanent der Speicher reserviert bleiben, daher skaliert es auch da erhebllich schlechter.
    Also doch, die Antowrt von drfuture stimmt, man muss nur die gesamte Technik berücksichtigen und nicht nur den Abstraktionslayer mit dem man arbeitet.

    Anderes Beispiel für die slebe Problematik:
    Ich habe eine Knopf, der einen Email an ein Restaurant schickt und eine zahlung druchführt.

    Also muss ich nur auf den Knopf drücken, dann bekomme ich Pizza.
    => Knopf drücken = Pizza

    Alternativ muss ich zum Laden, alle Zutaten kaufen und mir sleber Pizza machen.
    => man das ist ja total unnötig kompliziert, ich bleib lieber beim Knopf, das ist wesentlich weniger Aufwand. Wie blöd muss man eigentlich sein Pizza zu backen wenn man einfach Knöpfe drücken kann? Warum ist der Scheiss so teuer?
    Den blöden Knopf zu drücken dauert doch nichtmal 1 Sekunde!
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  14. #14
    Mitglied

    (Threadstarter)

    Avatar von CPU
    Registriert seit
    Feb 2015
    Beiträge
    31

    Re: PHP/VanillaJS Long Polling Chat

    Wie gesagt ich löse das Problem jetzt mit Node.js
    Node.js | JavaScript ❤

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •