*nochmaldaraufhinweis*

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

  • *nochmaldaraufhinweis*

    ich würde gern nochmal auf diesen thread von mir hinweisen:

    http://www.php-resource.de/forum/sho...&threadid=9133

    das problem is wirklich ernsthaft wäre für hilfe sehr dankbar. Ich poste diesen hinweis nur weil das problem ein sehr sehr wichtiges is. Normal bin ich nich so aufdringlich... entschuldigt also bitte..

    __________________________
    __________________________

  • #2
    Muß ich dir die selbe antwort geben, wie Titus!

    PHP unterstützt keine Direkte client-server-kommunikation! Um sowas Performant hinzubekommen, mußt du Java nehmen...

    PHP bearbeitet/reagiert nur Responses und Requests. Sprich die Seite muß sich selbst (z.B. per Javascript) immer wieder selber aktualisieren. Mit ein paar Leuten ist das kein Problem, lass dann allerdings mal 50 leute chatten, die 1x pro sekunden die Seite aktualisieren. Dein hoster wird dir vermutlich was erzählen.

    Eine andere Möglichkeit wäre es, mit PHP auf IRC auszuweichen, darüber kann ich dir allerdings nichts genaueres sagen, hab ich nur mal einen Artikel drüber gelesen!

    gruss

    Kommentar


    • #3
      Naja ... wenn du die Ausführungszeit des Scripts nicht beschränkst kannst Du Deine Response natürlich auch über stunden hinziehen ... so arbeiten Chat-Scripte tatsächlich ...

      Ich würde dafür (im Beispiel Nicht IRC-Chat) halt 'ne Tabelle erstellen in der Mit einem DATETIME-Feld cronologisch die Einträge gespeichert werden. Und in einer Schleife jeweils abgefragt wird ob seit der letzten Request neue Datensätze hinzugekommen sind ...

      Beispiel:
      Code:
      CREATE TABLE `chat` (
      	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      	`indate` DATETIME NOT NULL,
      	`data` MEDIUMTEXT NOT NULL ),
      	PRIMARY KEY (id),
      	COMMENT = 'Chat';
      Text einfügen über:
      Code:
      INSERT INTO `chat` (`indate`, `data`) VALUES (NOW(), '$txtAnswer');
      PHP-Code:
      $lastaccess=0;
      $updateinterval=15;
      do {
          
      // macht die Tabelle immer schön klein ...
          
      mysql_query("DELETE FROM `chat`WHERE indata<NOW()-INTERVAL 10 MINUTE");
          if ( 
      $res=mysql_query("SELECT `data` FROM `chat` WHERE UNIX_TIMESTAMP(indate)>$lastaccess") ) {
              while ( 
      $row=mysql_fetch_row($res) ) {
                  echo 
      nl2br(htmlspecialchars($row))."<br />";
              }
          }
          
      $lastaccess=time();
          
      set_time_limit($updateinterval*2);
          
      sleep($updateinterval);
      } while (
      TRUE); 
      Das wichtige ist halt das Du den Timeout verhinderst ( set_time_limit() ) ... das geht allerdings nicht bei jedem Provider ...

      Ich habe mal ein Beispiel ins Code-Schnipsel gelegt ...
      Zuletzt geändert von goth; 16.07.2002, 14:38.
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        anscheinend gibt es sowas doch:

        "Mazen's PHP Chat ist ein, komplett in PHP, geschriebenes Chatsystem.
        Anders als z.B. der PHPChat von Till Gerken, oder Sascha Schumann's IRCG wird kein zusätzlicher IRC server benötigt, um die Nachrichten zu verteilen.

        Ebenso verwendet der Chat keine Meta-Refreshes um seine Nachrichtenausgabe zu erzeugen. Es erzeugt einen konstanten Datenstrom zum Chatuser, und so fällt das lästige "Bildschirm-Flackern" weg."
        __________________________
        __________________________

        Kommentar


        • #5
          Das habe ich doch gerade versucht zu erklären ...
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            okay danke bin manchmal schwer von bergirff hab deinen beitrag nur so überflogen. Werd ihn mri mal reinziehen!
            __________________________
            __________________________

            Kommentar


            • #7
              also wenn ich das jetzt richtig verstanden hab schreibt man in eine endlosschleife die abfrage die schaut ob neue messages da sind und verhindert dem timeout oder?
              __________________________
              __________________________

              Kommentar


              • #8
                Den Timeout kannst du mit ner Endlosschleife nicht unterbinden... Um ne Endlosschleife auf nem Webserver zu beenden wartest du sehnsüchtig auf den Timeout!

                gruss

                Kommentar


                • #9
                  okay *nochmalcodeschnipselanschau*
                  __________________________
                  __________________________

                  Kommentar


                  • #10
                    Nein ... das wichtigste hatte ich natürlich vergessen:

                    set_time_limit($updateinterval*2);

                    Dadurch wird der Timeout für die Ausführung des Scripts auf, in diesem Falle, 30 Sekunden gesetzt ... und der TimeoutZähler zurückgesetzt ... nach 15 Sekunden wird jeweils geprüft ob neue Daten vorhanden sind.

                    Genaugenommen muß die Abbruch-Bedingung für die Schleife der aktuelle Ausführung-Status sein ... damit du 'nen User-Abbruch mitbekommst ... .
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar

                    Lädt...
                    X