HTTP-Push "COMET" Technik - Was ist zu beachten, damit es funktioniert?

  • Hallo,

    vielleicht haben manche außer mir auch schon davon gehört, es geht um die COMET-Technik (oder auch HTTP-Push) genannt. Diese macht es möglich Echtzeit-Aktualisierungen zu senden, ohne, dass der Client dauernd eine Anfrage schicken muss. Das wird über das Offenhalten einer Verbindung seitens des Servers erreicht. Um genau zu sein mit einer Endlosschleife und einer Verzögerung... also:

    PHP
    <?php
    while(true) {
      echo date('d.m.Y, H:i:s').'<br />';
      flush();
      usleep(1000);
    }
    ?>

    Das klingt ja alles ganz interessant, aber dazu hab ich zwei Fragen:
    1. Ist das WIRKLICH Serverentlastender als die normale Client -> Server -> Client Prozedur ? Immerhin ist das eine Endlosschleife.
    2. Auf meinem Server funktioniert die Sache schonmal nicht... Wenn jemand damit Erfahrung hat, was ist dabei zu beachten ? Ist das ganze mit PHP möglich ? Ich hab zwar einiges gegoogelt aber viel brauchbares war nicht dabei und Englisch versteh ich sowieso nicht.

    Wäre für Hilfe echt dankbar :))

    Lg

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • nachfolgend meine meinung, ungeachtet dessen, was andere sagen, meinen oder was ggf irgendwo geschrieben steht....!

    also ja is mit php möglich, hab ich schon gemacht.
    aber bedenke: wenn der server (ich sag mal bewusst was kleines) 100 verbindungen verträgt und sich 100 leute einloggen und http-push bekommen...
    dann haste die kacke am dampfen wenn person 101 kommt, die bekommt dann keine connection, nen timeout oder ggf wird wer anders gekickt für die neue connec.

    http-push is nich gesund, wie ich finde.

    klar entfallen immer wieder zu sendende headerinfos, doch du kannst halt nie alles abfrühstücken
    noch dazu lädt die seite ewig weiter, was einem vermittelt, dass die page noch nich fertig is. das is auch doof dann lieber wat mit ajax und nem 2 bis 5 sek-reload machen

  • Hallo ja es ist möglich.
    Allerdings ist der Task ziemlich schwierig.
    Ich wiederspreche allerdings dem vorredner stark.

    Server Push ist viel gesünder für Echtzeit geschichten als Client Pull
    und reduziert die Serverlast enorm.

    Bei 100 Usern die Client Pull betreiben, sagen wir jede sekunde wird gepollt.
    Das wären in einer Minute 6000 Requests zum Server.
    Die Facebook Streams würden mit Client Pull gar nicht funktionieren.

    Zu beachten bei Server Push ist u.A.:
    Ountput Buffering ausschalten!
    Conent-Encoding darf nicht gzip sein, weil gzipter content IMMER gebuffert wird.
    Aufpassen auf php timeouts und speicher limits, Variablen immer unsetten!

    Grüsse

    Robert S.