CGI in endlosschleife beenden
|
Seitenanfang |
| Hallo ich hoffe mir kann jemand helfen ich habe einen chat programmiert und zwar läuft das Programm welches alle Nachrichten anzeigt in einer endlosschleife da ich ja nicht weiß wieviel nachrichten jeder User schreibt! Aber ich habe festgestellt das das Programm auch weiter läuft wenn der jeweilige User garnicht mehr im chat ist! gibt es eine Möglichkeit zu prüfen ob die verbindung client - Sever noch besteht oder so etwas ähnliches! Ich habe schon gelesen das Perl das allein macht muss ich aber leider wiederlegen
Datum: 20.09.2005-15:31

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Hast Du denn vielleicht ein wenig Beispielcode des Servers und des Clients? So ist das ein Raten ins Blaue für uns. Gruss, svenXY
Datum: 20.09.2005-16:08

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
das stückel code is ganz schön lang und will ich auch wegen sicherheit nicht preisgeben ich erklär es besserwhile(1) { und in dieser schleife befinden sich auch Datenbank abfragen aber wenn der User den Chat verlässt wird das Programm nicht beendet sondern läuft weiter und weiter es muss doch eine möglichkeit geben ob der User das frame noch auf hat oder nicht? }
Datum: 20.09.2005-19:23

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Hi, vielleicht mit 'nem Absolutsprung.
while(1) { [...] if($ende) { goto ENDE; } [...] } ENDE:
-uw
Datum: 21.09.2005-13:52

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| ja aber was ist ende ausserdem mag ich nicht so wirklich sprünge
Datum: 21.09.2005-15:20

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Hmmm, $ende ist nur sysmbolisch. Gut Du magst Sprünge nicht, ich auch nicht. Ich mag aber auch keine Endlosschleifen sondern Rekursionen. ;-) Eine andere Möglichkeit wäre die Endlosschleife in eine sub zu packen und sie gegebenenfalls mit einem return zu verlassen. -uw
Datum: 21.09.2005-17:20

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| ja ich weiß wie ich aus einer endlosschleife rauskomme loool aber ich will testen ob der User mit seinen Browser noch da ist oder nicht und das als abruch für meine endlosschleife nähmen und halt aslo do { }while(verlassen eq ok) halt sowas dann
Datum: 21.09.2005-17:42

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| vielleicht kannst Du in die Seite, die Du auslieferst einen HTTP Refresh einbauen. Dann könntest Du einfach nach einer Weile sagen, wenn kein Refresh kommt, ist der Client weg. Soweit ich mich erinnere, war das doch eh ein chat, dann wäre es doch ohnehin nett, dem user das Drücken des reload Buttons zu ersparen, oder? svenXY
Datum: 21.09.2005-17:51

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| ahja bloss das es kein refresh gibt! da es mit cgi programmiert wurden ist! und ich jetzt nicht ein refresh einbaue das wär ja das dümmste
Datum: 21.09.2005-19:57

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| was hält Dich davon ab, Dein cgi mit einem <meta ... refresh> auszustatten? Ich habe das schon oft gemacht.
start_html({head=>meta({http_equiv=>'refresh', content=>'300'})})
= reload alle 5 MinutenGruss, svenXY
Datum: 22.09.2005-10:13

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| warum wäre es das Dümmste? So wie ich Dich verstanden habe, müsste jeder Chatter regelmässig refresh drücken, um sehen zu können, was die anderen schreiben... Findest Du das eleganter? svenXY
Datum: 22.09.2005-10:14

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| äh nein das hab ich nie gesagt es geht ohne refresh das ist es ja halt dann wär es ja ganz einfach
Datum: 22.09.2005-16:54

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| dann verstehe ich echt nicht, was Du eigentlich willst. HTTP ist kein persistentes Protokoll, dh. sobald der Server die Seite abgeschickt hat, ist es ihm egal ob der client noch da ist oder nicht. Du wirst wohl irgendwas beim Client machen müssen, ob das nun ein refresh ist oder JavaScript oder was weiss ich was. Wenn es, wie Du sagst, einfach ist, dann gibt es auch kein Problem. ;-) Mich würde immer noch interessieren, wie der client die Beiträge von anderen zu sehen bekommt ohne refresh... svenXy
Datum: 22.09.2005-17:20

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| mit perl ist es doch möglich das man bis ins unendliche eine seite ausführen kann!!! die seite wird auch unendlich ausgeführt der code auf dieser seite schickt die nachrichten hin und her du hast doch bei keinen chat mehr refreschs dann müste es mit php gemacht sein ich such nach einer mäglichkeit ob ich mittels cgi testen kann ob der client noch da ist mittels funktion ohne refresh!!! damit der code irgendwann beendet wird
Datum: 22.09.2005-20:19

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Hallo! Du scheinst, nicht zu begreifen. Der Client schickt eine Anfrage an den Server - keine Verbindung! Der Server verarbeitet die Anfrage und sendet die Antwort an den Client zurück - keine Verbindung. Soetwas wie eine Verbindung zwischen Server und Client kennen HTML und CGI nicht. Es ist beispielsweise auch per Definition eigentlich unsinnig, wenn auf einer Seite steht, es seien X User online. Das müsste heißen, dass kürzlich X User Anfragen an den Server gestellt haben - z.B. in den vergangenen 20 sec. In den meisten Systemen wird beim Stellen einer Anfrage für registrierte Nutzer irgend ein Logeintrag in eine Tabelle vorgenommen und eine ID kreiert. Ein Script prüft dann, wann die letzte Anfrage des Users war. Ist zwischen letzte Anfrage und dem aktuellen Zeitpunkt eine gewisse Zeit verstrichen - z.B. 10 min - dann wird der Logeintrag gelöscht und der User gilt als abgemeldet - es sei denn man hat einen Logout vorgesehen. Das ganze Logout/Login sind aber nur Pseudobegriffe im CGI-Kontext. Nicht umsonst muss bei solchen Projekten verschlüsselt und in den allermeisten Fällen irgenwie als hidden-Formularfeld eine ID von einer Anfrage zur nächsten weitergereicht werden, um dem User den eingeloggten Eindruck zu vorzutäuschen. In CGI Endlosschleifen zu programmieren, ist eher unglücklich und man sollte die Philosophie so ändern, das es ohne geht. Ciao IngoB
Datum: 23.09.2005-07:28

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| @IngoB: danke! @blue_devil: Du hast immer noch nicht gesagt, wie Du es machst, dass beim client die neuen chat Mitteilungen der anderen auftauchen...
Datum: 23.09.2005-10:05

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Okay ich danke euch für eure Hilfe aber ich glaube Ihr wist weniger als ich ich zeige euch jetzt was das könnt ihr mal ausprobieren okay ----------------------------------------------- #!/usr/bin/perl ################################################################################ # # # # # Christoph Wihan # # www.werdau-chat.de für weiter fragen gern zu haben # # # # endlosscounter mittels Perl CGI # # # # # ################################################################################ #informationen an bildschirm schicken $|=1; print ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>www.werdau-chat.de</title> </head> <body>'; my $counter=0; #intitaliesrung der variable counter while(1) #beginn der endlosschelife { $counter = $counter+1; #counter um eins addieren printf "$counter <br>"; #ausgabe der variable und neue zeile system ("cls"); #system cache leeren sleep(1); #ne sekunde warten } printf "</body> </html>";
Datum: 23.09.2005-20:02

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Okay ich danke euch für eure Hilfe aber ich glaube Ihr wist weniger als ich ich zeige euch jetzt was das könnt ihr mal ausprobieren okay ----------------------------------------------- #!/usr/bin/perl #informationen an bildschirm schicken $|=1; print ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>www.werdau-chat.de</title> </head> <body>'; my $counter=0; #intitaliesrung der variable counter while(1) #beginn der endlosschelife { $counter = $counter+1; #counter um eins addieren printf "$counter <br>"; #ausgabe der variable und neue zeile system ("cls"); #system cache leeren sleep(1); #ne sekunde warten } printf "</body> </html>";
Datum: 23.09.2005-20:04

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| Okay ich danke euch für eure Hilfe aber ich glaube Ihr wist weniger als ich ich zeige euch jetzt was das könnt ihr mal ausprobieren okay ----------------------------------------------- #!/usr/bin/perl #informationen an bildschirm schicken $|=1; print ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>www.werdau-chat.de</title> </head> <body>'; my $counter=0; #intitaliesrung der variable counter while(1) #beginn der endlosschelife { $counter = $counter+1; #counter um eins addieren printf "$counter <br>"; #ausgabe der variable und neue zeile system ("cls"); #system cache leeren sleep(1); #ne sekunde warten } printf "</body> </html>";
Datum: 23.09.2005-20:04

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| wer es immer noch nicht glaubt kann ja einfach die UNIX zeit vom Server ausgeben lassen loool
Datum: 23.09.2005-20:05

|
re: CGI in endlosschleife beenden
|
Seitenanfang |
| oh je...
Datum: 26.09.2005-09:20

|