Mäx: messenger - php

Hallo,

ich erstelle ein kleines Messengerscript, für private Zwecke.

Dabei plane ich die Chat-History browserseitig zu speichern, entweder in Form von Cookies oder in einer session. Gechattet wird jeweils in einem kleinen Pop-Up-Window.

Die Datenbank dient bei dem Messenger hierbei also bloß als "Zwischenspeicher" mit den Tabellen <ID, Sender, Empfänger, Nachricht, Datum>.

Würdet Ihr hier eher Cookies oder eine Session verwenden?

Berücksichtigt sollte werden, dass mit 2 oder 3 personen gleichzeitig gechattet werden kann.

Grüsse,
Mäx

  1. Ich grüsse den Cosmos,

    Würdet Ihr hier eher Cookies oder eine Session verwenden?

    Weder noch. PHP-essions SIND Cookies und deren Länge ist begrenzt. Wenn du die Session per URL weiterreichst, wirst du irgendwann Probleme mit der Länge kriegen.
    Was du brauchst ist entweder Serrver-Push (keine AHnung, ob das noch existiert) oder ein Server-Pull, wie es bei Streamingchats relaisiert wird.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    1. Hi,

      Weder noch. PHP-essions SIND Cookies und deren Länge ist begrenzt.

      Die Laenge ist begrenzt, fuerwahr, jedoch sind es keine Cookies im
      Sinne eines standard Client-Cookies. Das einzige, was als Cookie gesetzt
      wird (*), ist die Referenz auf die laufende Server-Session.

      * vorausgesetzt die SessionID wird nicht mit ueberliefert.

      anton

      1. hi,

        Weder noch. PHP-essions SIND Cookies und deren Länge ist begrenzt.
        Die Laenge ist begrenzt, fuerwahr

        Durch was?

        M.W. höchstens durch den zur Verfügung stehenden Speicher (RAM/HDD) - nur darauf bezogen könnte man diese Aussage ja für so gut wie alles treffen, was irgendwo abgelegt werden muss.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Ich grüsse den Cosmos,

          Durch was?

          War da nichtmal was, das Cookies und Session-Cookies nur 256 Bit lang sein können?
          Ansonsten kann man theoretisch natürlich per POST soviele Daten übertragen, wie man will.

          Möge das "Self" mit euch sein

          --
          Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
          1. hi,

            War da nichtmal was, das Cookies und Session-Cookies nur 256 Bit lang sein können?

            Cookies und Session-Cookies sind das selbe.
            Ja, deren "Länge" ist begrenzt.

            Cookie-Spezifikation von Netscape:
            There are limitations on the number of cookies that a client can store at any one time. This is a specification of the minimum number of cookies that a client should be prepared to receive and store.

            • 300 total cookies
            • 4 kilobytes per cookie, where the name and the OPAQUE_STRING combine to form the 4 kilobyte limit.
            • 20 cookies per server or domain. (note that completely specified hosts and domains are treated as separate entities and have a 20 cookie limitation for each, not combined)

            Aber eine normale Session-ID von PHP hat 32 Zeichen, das passt wohl noch.

            Und wie viele Daten serverseitig in der Session abgelegt werden, hat mit dem Cookie überhaupt nichts zu tun -

            Ansonsten kann man theoretisch natürlich per POST soviele Daten übertragen, wie man will.

            und POST genauso wenig.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Ich grüsse den Cosmos,

              Aber eine normale Session-ID von PHP hat 32 Zeichen, das passt wohl noch.

              Das war mir schon klar, nur hab ich den OP so verstanden, das er immer den gesammten Text im Cookie speichern will. Wir haben wohl aneinander vorbeigeredet ;)

              Möge das "Self" mit euch sein

              --
              Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    2. An Erde,

      Wenn du die Session per URL weiterreichst, wirst du irgendwann >Probleme mit der Länge kriegen.

      ...ich würde die Session nicht per URL weiterreichen.
      Mit dem Öffnen des Pop-Ups wird eine individuelle Session eröffnet. EIn refresh holt immer die aktuellen Daten aus der DB und löscht die entsprechende gleich wieder.... die Daten werden an die Session angehängt und angezeigt...

      Was du brauchst ist entweder Serrver-Push (keine AHnung, ob das >noch existiert) oder ein Server-Pull, wie es bei Streamingchats >relaisiert wird.

      Was meinst du konkret mit Server-Pull? ... gibt es da tutorials, beiträge oder ähnliches, das ich für mein konkretes Problem brauchen könnte?

      Sei gegrüßt,
      Mäx

      1. Ich grüsse den Cosmos,

        Was meinst du konkret mit Server-Pull? ... gibt es da tutorials, beiträge oder ähnliches, das ich für mein konkretes Problem brauchen könnte?

        e-xoops hat ein solches Modul integriert, da hast du fertigen Code. Ansonsten schau dir Streamingchats an (phpOpenChat z.B.). Entscheidend ist Wissen über Sockets. Im Prinzip lieferst du eine "unendlich lange" HTML-Seite, die z.B. jede Sekunde nur ein Leerzeichen sendet, damit der Stream nicht abreisst. Wenn Text ankommt wird eben dieser angezeigt.

        Ist aber keine leichte Kost und für Anfgänger auch aufgrund der Sicherheitsproblematik, wohl nicht das optimale Projekt.

        Möge das "Self" mit euch sein

        --
        Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
  2. n'abend,

    Dabei plane ich die Chat-History browserseitig zu speichern, entweder in Form von Cookies oder in einer session. Gechattet wird jeweils in einem kleinen Pop-Up-Window.

    Hier hat sich ein kleiner Denkfehler eingeschlichen.
    Daten eines Cookies werden auf dem Client gespeichert.
    Daten einer Session werden auf dem Server gespeichert, der Client erhält lediglich eine Referenz auf die auf dem Server gespeicherten Daten.

    Die Datenbank dient bei dem Messenger hierbei also bloß als "Zwischenspeicher" mit den Tabellen <ID, Sender, Empfänger, Nachricht, Datum>.
    Würdet Ihr hier eher Cookies oder eine Session verwenden?

    Weder noch.
    Du hast von privaten Zwecken gesprochen. Also in kleinem Kreise. Da kann man davon ausgehen, dass die Benutzer Javascript aktiviert haben - und wenn nicht, es für den privaten Chat aktivieren würden.

    Ich würde das ganze mit ein bischen AJAX lösen. Du schickst neue Messages in einem Request an den Server. Und holst dir - sagen wir mal alle 10 Sekunden - _die neuen_ Nachrichten der anderen vom Server. Deine History erreichst du  automatisch dadurch, dass du die neuen Nachrichten der anderen einfach an die bestehenden anhängst (und schaust, dass du nicht mehr als - sagen wir mal - 100 messages in der Anzeige behälst).

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|