chat in php ?! |
benjamint
Pixelschubser Threadstarter
Beiträge: 7 |
also ich bin dabei, oder will grade anfangen einen chat zu programmieren ...
nun ist meine frage: ist php überhaupt geeignet ?!
wenn ja oder zumindest eine gute alternative: mit welchen funktionen würde man einen guten chat schreiben ?
ich bin der meinung ich hätte schon einmal einen geschrieben ?! ... ich glaube mit flush() !?
ist schon länger her und ich glaube die resources des rechners sind förmlich geplatzt .. ;)
wenn jemand kenntnisse hat die ich nicht besitze UND DIE AUF MEINE FRAGE ANTWORT GEBEN bitte immer her damit !! :D
danke
benjamin
|
 Profil
Website
Editieren
Zitieren
|
KeyLF
Forenheld
Beiträge: 866 |
mit ()flush ?????????????????? Das leer nur den Speicher und gibt Ressourcen frei (denk ich mal ist irgendwo auch genau beschrieben) aber damit kann man doch keinen Chat schreiben?! Oder hast Dich vielleicht nur schlecht ausgedrückt?!
Außerdem denke ich, muss man die Welt nicht neu erfinden... da gibt es unmengen an fertigen und wirklich guten Scripten... Die Arbeit würde ich mir nicht machen.
Diese Nachricht wurde geändert von: KeyLF |
 Profil
Editieren
Zitieren
|
benjamint
Pixelschubser Threadstarter
Beiträge: 7 |
ein fertiges script kann ich überhaupt nicht gebrauchen ...
... hmmm, kein flush ?! ... dabei war ich mir da fast sicher ...
kann sein das ich mich irre ...
|
 Profil
Website
Editieren
Zitieren
|
KeyLF
Forenheld
Beiträge: 866 |
Mit fflush() kann man den Ausgabepuffer einer Datei (fp) auf den Datenträger
schreiben. |
Sicher.. der Server wirds dir danken aber das hat doch nix mit nem guten Chta zu tun?! Wieso kannst fertige nicht gebrauchen? Schau mal unter www.hotscripts.com da findest sicher was?! Oder was sind die spez. Anforderungen?!
|
 Profil
Editieren
Zitieren
|
benjamint
Pixelschubser Threadstarter
Beiträge: 7 |
mit fertigen scripts arbeite ich grundsätzlich nicht !
entweder es wächst auf meinem mist, oder gar nicht ! ...
ich bin grad auf der suche und sehe --> It's ok. (No, it's not ok, but I'm not a Perl specialist and I don't know how to fix it ).
wunderbar !
da sind leute die, genau wie ich, keinen ahnung haben was sie dort tun, aber ich solls aufm server installieren ?! pfft ;)
ausserdem muss der chat reibungslos auf http://webtreff.net/ eingefügt werden ...
... also fertig-scripte scheiden aus !!
|
 Profil
Website
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
So, jetzt mal ne gescheite Antwort:
Entweder benutzt du Flush nach jeder Textausgabe, damit der Text zum Browser gesendet wird, oder du setzt ganz am Anfang ob_implicit_flush(), dann passiert das automatisch nach jeder Textausgabe (ohne Flush).
Eine Möglichkeit für nen Chat wäre die neuen Zeilen in eine Datei zu schreiben und bei dem Ausgabescript z.B. alle 2 Sekunden prüfen, ob die Datei neue Zeilen enthält (größer geworden ist), und dann die neuen Zeilen auszulesen und auszugeben. Gibt elegantere und Ressourcen schonendere Varianten. Das hier ist die einfachste (abgesehen von nem Meta-Refresh-Chat).
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
c3o
Posting-Schinder
Beiträge: 585 |
Nachtrag: Hoppla, da ist mir Can zuvorgekommen.
Doch doch, durchaus flush() -- denn um einen Chat nicht mit permanenten Reloads zu machen, musst du eine, ewig lang (solang der User im Chat ist) ladende Seite haben. Mit flush() wird das bisher ge-echo-te an den Browser geschickt auch bevor die Seite fertig geparst ist.
Soweit ich mich erinnere musst du für einen Chat auch das Timeout-Limit von PHP ausschalten/runtersetzen.
Genaueres kann ich dir dazu auch nicht sagen ... ressourcenintensiv wirds aber garantiert!
Diese Nachricht wurde geändert von: c3o |
 Profil
E-Mail
Website
Editieren
Zitieren
|
c3o
Posting-Schinder
Beiträge: 585 |
Noch was: Du stellst ja selber die Frage: Ist PHP dafür geeignet?
Die Anwort ist wohl: nicht wirklich. Keine Pull-Technologie (Client schickt Anfrage, Server antwortet: HTML, PHP, usw) ist für einen Chat gut geeignet, weil du so eben alle X Sekunden selbst nachschauen musst obs was neues gibt, anstatt dass dir neue Nachrichten vom Server automatisch geschickt werden können. Möglich wäre so ein Push mit Java oder Shockwave.
Diese Nachricht wurde geändert von: c3o |
 Profil
E-Mail
Website
Editieren
Zitieren
|
KeyLF
Forenheld
Beiträge: 866 |
benjamint schrieb am 19.04.2004 18:30
ausserdem muss der chat reibungslos auf http://webtreff.net/ eingefügt werden ...
... also fertig-scripte scheiden aus !! |
Naja dann versteh ich das natürlich vollkommen
Diese Nachricht wurde geändert von: KeyLF |
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Und noch nen paar Links zum Thema:
http://www.webwork-community.net/posting2314_23_0.html
http://www.webwork-community.net/posting3612_23_0.html
Ach ja: Timout-Limit muss mit set_time_limit(0) ausgeschaltet werden, und unter Umständen, wenn die Ausgabe nicht richtig klappt, muss header("Content-type: text/html") noch vorne dran.
---
" S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
Xenon
Feiertags-Poster
Beiträge: 35 |
Hallo Benjamint,
ich habe kürzlich selber einen Chat programmiert.
Also zur ersten Frage: wie schon erwähnt ist eine Pulltechnologie prinzipiell nicht geeignet sowas zu machen.
Abgesehen davon, dass derartige Chatsysteme im Betrieb einfach sehr langsam sind (du musst ja praktisch ständig requests absetzen) ist es kaum machbar auf die Art einen Chat zu bauen, der einigermaßen sparsam im Transfer ist.
Zudem bekommst du mit Sicherheit Probleme, wenn mal ein paar mehr Benutzer im Chat sind.
Ich habe mich deshalb für Java entschieden (Serverseitig und Clientseitig) und muss sagen, daß ich das bislang nicht bereut habe. Ganz abgesehen von Performance und sehr wenig Transfer im Betrieb (ich brauche ja quasi nur die Nettotexte über ip schicken, keine http- requests ausführen).
Wie schon erwähnt, kann der Server so die Daten auch an den Client schicken, ohne daß diese vom Client angefordert werden.
Eine Anbindung an Forumsoftware (ich hab bei mir z.b. Burning Board von WoltLab drin) lässt sich auch in Java einfach bauen.
Wenn du Interesse hast, dann kannst du dir das Ding unter www.x-forms.de runterladen und anschauen (oder mal abends auf die Referenzinstallation klicken).
Ich kann dir auch gerne ein paar Tips geben, wie du sowas am besten implementierst.
|
 Profil
E-Mail
Editieren
Zitieren
|
Agent
Quasselstrippe
Beiträge: 306 |
Vorschlag am Rande (wobei ich nicht weiss wie schonend oder gut das ganze ist):
IRC: ein eigener irc-server, auf dem server auf dem auch der webserver läuft. Da gibts dann die Möglichkeit einzelne channels, abzufragen und online anzuzeigen (wie genau weiss ich auch nicht, ich kenn nur fertige sachen die du ja ausschliesst (z.B. conferenceRoom, schweineteuer)). Hätte zum Beispiel den Vorteil das viele auch direkt per IRC connecten würden, und daher nicht auf eine wahrscheinlich auch resourcefressende Seite gehen würden um noch mehr resourcen zu fressen.
Frage dich wie viele Benutzer du erwartest (realistisch!), dann überlege dir, ob sich der aufwand und die resourceverschwendung lohnt.
Hth,
Agent
---
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
|
 Profil
Website
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Also ich persönlich bin nicht so der Java-Chat-Fan, und ich finde es spricht außer vielleicht einer IRC-Kompatiblität nichts gegen nen HTML-Chat - wenn ein solcher gut programmiert ist, frisst er nicht allzu viel Ressourcen.
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
Xenon
Feiertags-Poster
Beiträge: 35 |
du kannst es ja mal ganz einfach überschlagen.
wie oft willst du pollen ? 1 mal pro sec... dann wird dir der chat schon recht langsam vorkommen.
das verschafft dir bei 50 usern schon mindestens 50 requests pro sec nur für den text.....
mal abgesehen von smileys, bildchen, etc.
ich für mich selber hatte as ziel gesetzt mindestens 500 onlineuser auf einem handelüblichen pc ohne performanceeinbruch verarbeiten zu können.
ktitisch ist eben vor allem auch der traffic, der die geschichte im betrieb sehr teuer machen kann.
wenn du im prinzip für jede zeile einen request absetzen musst, dann schickst du einen riesen overhead an daten über die leitung, obwohl jemand vielleicht grad mal 3 buchstaben geschrieben hat. das ist für mich das ausschlaggebende argument für eine direkte ip- kommunikation + das pushen der daten auf den client.
p.s.: bei resourcen meinte ich natürlich die server- resource, clientseitig sollte man wohl bei egal welchem system keine probleme haben.
was ich eigentlich nur sagen wollte, das ist, dass du ohne aktiven client- anteil nur schwer auskommst.
|
 Profil
E-Mail
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
Ich kann PHP eigentlich gut - aber n Chat schnell programmieren? Ne. Nicht mit PHP - hab ich längst versucht. Ab 20 Benutzern gehts über 0,3ms - inakzeptabel.
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|