perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 25
Click for quality!




11.02.2012 / 21:26

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  CGI: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragCGI 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

Beitragre: 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

Beitragre: 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 besser

while(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

Beitragre: CGI in endlosschleife beenden
Seitenanfang
Hi,

vielleicht mit 'nem Absolutsprung.


while(1) { [...] if($ende) { goto ENDE; } [...] }
ENDE:

-uw

Datum: 21.09.2005-13:52

Beitragre: CGI in endlosschleife beenden
Seitenanfang
ja aber was ist ende ausserdem mag ich nicht so wirklich sprünge

Datum: 21.09.2005-15:20

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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 Minuten

Gruss,
svenXY

Datum: 22.09.2005-10:13

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: CGI in endlosschleife beenden
Seitenanfang
oh je...

Datum: 26.09.2005-09:20

-






-
-