irreversible
oberspammer
|
muss für ein schulprojekt für ein anderes programm unter anderem ein chat modul in php schreiben. hab mich schon im inet umgschaut nach brauchbaren chattechnologien, aber im prinzip hab ich bis jetzt immer nur das gleiche gfunden ... eine seite, die sich halt alle paar sekunden aktualisiert. da der chat auch für 100+ user (natürlich auch in getrennten räumen, aber 20 pro channel könnens durchaus sein) brauchbar sein sollte, is die lösung einfach gschissen, weil ja dann auf einmal ein block mit 20 zeilen kommt oder so.
hat irgendwer an plan, wie ma das gscheit macht bzw einen link oder sowas?
mfg und thx
|
that
ModeratorHoffnungsloser Optimist
|
"gscheit" geht das AFAIK überhaupt nicht mit reinem HTTP. Entweder es ist nicht realtime genug (siehe oben), oder es braucht zu viele Ressourcen (die andere Alternative ist nämlich, die Connection zum Browser offen zu lassen und regelmäßig die neuen Daten zu schicken, oder irgendein Dummyzeug wenn nix kommt, um Timeouts zu vermeiden).
|
Ringding
Pilot
|
naja, wenn man's anders macht (nämlich dass die tcp connection einfach offenbleibt und die zeilen stückweise rauskommen), dann wird man wohl mim php timeout ins gehege kommen. ob man das umgehen kann, weiß ich nicht.
|
watchout
Legendundead
|
rofl, php-timeout auf 24h stellen *gg*
imho die einzige möglichkeit es gscheit zu machen is ein eigenes modul zu schreiben, inwieweit dass dann mit der sprache php zu tun hat ist eine andere geschichte...
|
Ringding
Pilot
|
gescheit wäre, es überhaupt nicht über tcp (und damit http) zu machen, wie that schon gesagt hat.
|
watchout
Legendundead
|
ja, am besten schreibst was ganz neues: ein chat programm, taufst es internet relay chat und..... halt da passt was net, welches jahr haben wir?
ähm, ich glaub net dasses möglich ist php vom tcp-protokoll wegzukriegen, und WENN du das schaffst, wie willst du das dann beim client anzeigen, mit mirc?
|
watchout
Legendundead
|
muss für ein schulprojekt für ein anderes programm unter anderem ein chat modul in php schreiben. hab mich schon im inet umgschaut nach brauchbaren chattechnologien, aber im prinzip hab ich bis jetzt immer nur das gleiche gfunden ... eine seite, die sich halt alle paar sekunden aktualisiert. da der chat auch für 100+ user (natürlich auch in getrennten räumen, aber 20 pro channel könnens durchaus sein) brauchbar sein sollte, is die lösung einfach gschissen, weil ja dann auf einmal ein block mit 20 zeilen kommt oder so.
hat irgendwer an plan, wie ma das gscheit macht bzw einen link oder sowas?
mfg und thx rofl, mir is jetzt wirklich was eingfallen... user-seite: timeout (!) <1/10 s (!!) eingabefiles (siehe unten) werden mit javascript gelesen und per document.write hingepinselt beim SCHREIBEN wird dann das php-file aufgerufen serverseite: es wird nicht alles gespeichert, sondern nur die user-list und immer zb. 2sekunden oder 10 sekunden chat, aber nicht in einer seite, sondern pro eingabe ein file (wenn dir was besseres einfällt: bitte ) das php-script schreibt lediglich die usereingaben in die files, wodurch das script nur kurz laufen muss problem: das clientseitige script hat die aufgabe zu überprüfen, ob es eine eingabe schon eingelesen hat, oder nicht so - just a thought, is aber möglich EDIT: bledsinn, net timeout, sondern klarerweise intervall....
|
that
ModeratorHoffnungsloser Optimist
|
...und jeder Client schickt 10 HTTP-Requests pro Sekunde an den Server?
|
watchout
Legendundead
|
is, ja egal... was sind schon 10 http-requests? wenn ich die overclockers seite refreshe hab ich 150 requests, das sind ja keine datenmengen, die da rüberkommen, es geht ja u.u auch mit 1/3 bis 1/5 noch angenehm... is ne einstellgschicht....
edit: ausserdem ist es eine möglichkeit ohne limit-probleme auszukommen, ich hab nicht gesagt, dass sie überaus gut performt
Bearbeitet von watchout am 01.10.2002, 22:33
|
that
ModeratorHoffnungsloser Optimist
|
500 Bytes * 10 Requests * 100 User / 1 s = 500 kByte/s für die "paar" Requests... die "keine Datenmenge" frisst 5 MBit Bandbreite.
|
watchout
Legendundead
|
ja, ok in dem punkt hab ich mich wohl "ein bisserl" verschätzt - aber ich hab mir was überlegt, was gehen könnte und was auch funktioniert, auch wenn es net ideal is' - sag' wie man's besser macht, dann mecker'! und net kein tcp, weil soweit bin ich auch schon kommen.... mir fällt grad ein, dass es ein irc-modul für php gibt, rennt zwar nur unter linux afaik , aber das heisst ja dass es möglich is', net?
|
Ringding
Pilot
|
200 Connections gleichzeitig offenzuhaben soll ja nicht so ein Problem sein. Also für so einen kleinen internen Server ist es mit ständig offenen Connections noch am besten geeignet. Musst halt einen Weg finden, wie du im PHP auf ein Event warten kannst (Blocking Reads von einer Pipe oder sowas)
|
that
ModeratorHoffnungsloser Optimist
|
Die Lösung, die ich mal gesehen habe, war in 2 Frames geteilt: im ersten war die Verbindung dauerhaft offen, und im zweiten hat man seine Eingaben gemacht und mittels normalem Form-Submit an den Server geschickt. Der hat das "irgendwie" an alle offenen Connections weitergeleitet.
|
watchout
Legendundead
|
Die Lösung, die ich mal gesehen habe, war in 2 Frames geteilt: im ersten war die Verbindung dauerhaft offen, und im zweiten hat man seine Eingaben gemacht und mittels normalem Form-Submit an den Server geschickt. Der hat das "irgendwie" an alle offenen Connections weitergeleitet. kann man sich zb am orf-chat anschaun, wenn man java deaktiviert dass die conn immer offenbleibt, da könnt' ich nur spekulieren... des will ich jetzt net, also lass ichs... und falls dir das was bringt: http://www.php.net/manual/de/ref.ircg.phpfunkt übrigens nur mit dem thttpd-webserver!
|
Newcron
Bloody Newbie
|
hm... vielleicht bringens die neuen Socket funktionen in PHP ( http://www.php.net/manual/en/ref.sockets.php ) aber das mit der running time ist trotzdem ein problem, genauso wie das, dass für jeden benutzer das php script unabhängig ausgeführt wird, also was user 1 macht kann user 2 nicht sehen, man müsste die scripte irgendwie miteinander kommunizieren lassen - wäre ansich möglich - PHP hat das drauf, aber auch nur unter ^(UNI|LINU)X$ Für einen chat brauchst du einen server, der ständig läuft und alles verwaltet - das ist das allereinfachste. PHP ist dafür nicht allzu gut...
|