php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.01.2009, 16:33  
Dominik
Gast
 
Beiträge: n/a
Standard Überprüfen ob User online

Hallo,

ich muss für eine Seite überprüfen welche Useronline sind.
Früher habe ich das sogemacht das ich bei jeder aktion des users den timestamp in die db geschrieben habe,

nun gibts aber auf diese Seite einen CHAT, dh man kann ihn auch bedienen ohne die seite zu refreshen, nun hab ich eine ajax funktion gemacht die jede 5 sekunden den timestamp des users in die db schreibt sowie die abfrage welche online sind anzeigt...

ich denke das ist sehr serverlastig, kennt ihr ne bessere möglichkeit oder ist das ok so

mfg
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.01.2009, 21:14  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wie sieht der Chat denn aus?

Wenn der Benutzer die neuen Nachrichten des Chat anfragt, weißt du ja auch dass er noch da ist. Andernfalls Zeitintervall erhöhen, vma auch inkrementell, sprich erst alle 15 Sekunden, dann 2 Minuten alle 30 Sekunden, danach nurnoch jede Minute usw.
Chriz ist offline  
Alt 03.01.2009, 00:12  
Dominik
Gast
 
Beiträge: n/a
Standard

der chat lädt auch einfach jede x sekunden eine php datei die eine db abfrage enthält


der user kann den chat aber auch ausschalten (muss dann trotzdem wissen ob user online sind)

naja ich muss es wohl so machen , hoff halt das 2 ajax dateien nicht langsam werden für den server wenn du alle x sekunden wiederhohlt werden


mfg
 
Alt 03.01.2009, 14:19  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Dominik Beitrag anzeigen
der chat lädt auch einfach jede x sekunden eine php datei die eine db abfrage enthält


der user kann den chat aber auch ausschalten (muss dann trotzdem wissen ob user online sind)

naja ich muss es wohl so machen , hoff halt das 2 ajax dateien nicht langsam werden für den server wenn du alle x sekunden wiederhohlt werden


mfg
naja wieso muss es denn alle x sekunden sein? einmal pro minute oder sogar einmal pro 2 minuten reicht doch locker als "keep-alive" signal aus. das ist dann für den server auch kein problem.
du könntest - wenn du einen eigenen server hast - auch sowas wie memcached in betracht ziehen, das legt sozusagen eine temporäre datenbank (hash-tabelle) im RAM an und eignet sich für sowas eigentlich ganz gut.

mfg
BlackWolf ist offline  
Alt 03.01.2009, 14:35  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Ich habe das so gemacht, dass der Chat selbst für das An- und Abmelden verantwortlich ist. Da der gesamte Chat mit JavaScript läuft, ist das auch gar kein Problem. Beim onunload-Event sendet der Chat seine Verabschiedung an den Server und gut ist. Für den Fall, dass dabei etwas schief geht, hat der Server selbst auch noch ein Timeout eingebaut, sodass User, die länger als x Minuten kein Keepalive-Signal gesendet bzw. einen Chat-Refresh durchgeführt haben, aus der Liste gelöscht werden.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 06.01.2009, 18:26  
Dominik
Gast
 
Beiträge: n/a
Standard

okay mal genauer

(sry war in skiurlaub)


Ich habe eine Chat in einem Browsergame, ich muss alle 2 Sekunden überprüfen ob der User online ist, da ich nicht weis wann er sich ausloogt(kann die seite einfach verlassen wenn er will)

Nun ist ja das Problem das er die MYSQL abfrage jede 2 Sekunden für 20 eingeloogte User macht.

1. andere möglichkeit mit dem chat

Weis nicht ob es besser ist wenn ich vllt jede 2 Sekunde nen Cronjob losschicke und das Ergebniss der Abfrage in eine .txt schreibe, dann müssen die 20 leute jede 2 sekunde nur diese .txt laden

2. andere möglichkeit mit dem chat
Könnte auch beim schreiben in den Chat eine txt datei verändern , so müssen die user auch nur diese .txt laden

3. andere möglichkeit zum erkennen wer online ist
wenn jemand online geht schreib ich in die db "online" mit den html tag onexit schreib ich dann offline in die db

Welche wird die beste möglichkeit sein
 
Alt 06.01.2009, 18:42  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

siehe #5... ajax benutzen für das keep-alive signal... genauer wirst du es nicht hinbekommen, selbst messenger wie icq merken in manchen fällen nicht das der user gar nicht mehr online ist und die haben die eindeutig besseren Möglichkeiten
cycap ist offline  
Alt 06.01.2009, 19:09  
Dominik
Gast
 
Beiträge: n/a
Standard

1: ob onunload wohl auf jeden Browser geht , und wie zuverlässig?

2. Löst das nicht die Frage mit den Chat


mfg
 
Alt 06.01.2009, 21:50  
Dominik
Gast
 
Beiträge: n/a
Standard

was haltet ihr davon:

man loogt sich ein , in der db wird der status auf online gesetzt

falls keiner vor ihm online war bekommst er den status als "lader" dh er lädt die wer ist online anzeige sowie den chat jede 5 sekunden und speichert die ergebnisse in eine txt datei

die anderen user müssen dann nur per ajax die 2 txt datei laden

falls der user das spiel mit onunload oder ohne aktion nach minuten verlässt gibt er einen anderen user den status loader und dieser muss dan die daten laden


wie wär das?
so gibts für die 2 sachen für die db pro sekunde nur 2 abfragen

nur muss ich schauen wie ich den user mittelen kann das er nun der "loader" ist

mfg
 
Alt 06.01.2009, 23:04  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Was du da versuchst ist eine Art caching, aber da gibt es bessere Möglichkeiten.

Du lädst generell die Daten aus einer Textdatei, meinetwegen alle 2 sekunden oder wie auch immer. Ändert sich der Status eines Users (on-/offline) wird eine neue Textdatei mit Timestamp im Filename angelegt und die alte gelöscht. Findet einer der User also seine alte Textdatei nicht mehr, nimmt er die neuste. Ansonsten wieder die gleiche.

Somit würdest du, angenommen es sind 2 Stunden lang immer die gleichen User online, in den 2 Stunden nicht einmal die Datenbank für den Status brauchen.

Bein Chat selbst ist caching auf dem Server blödsinn, da sich die Daten zu oft ändern. Hier würde ich auf dem Client "cachen" indem du immer nur die noch nicht abgerufenen Texte per AJAX nachlädst.
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
User Online nie gleich 0 DiamondDog PHP Tipps 2008 4 22.08.2008 10:06
FTP-Funktionen: Können 2 Leute mit selben User online sein? ggfan PHP Tipps 2005-2 1 11.08.2005 13:13
user online counter $$$ ThiKool $$$ PHP Tipps 2005-2 3 01.07.2005 22:24
Online User PHP Tipps 2005-2 9 15.06.2005 23:46
Alle user die online sind anzeigen - wann und wie löschen? PHP Tipps 2005 11 24.05.2005 16:01
MIt einer Session ID den User überprüfen PHP Tipps 2005 8 17.02.2005 13:55
user online! ist mein weg richtig? Fraylman PHP Tipps 2004-2 8 10.12.2004 10:15
Anzeigen User Online + Nicks Ypsillon PHP-Fortgeschrittene 4 12.11.2004 14:09
user online PHP Tipps 2004 4 26.09.2004 22:59
User online? Creativ PHP Tipps 2004 1 17.08.2004 22:34
User Online PHP Tipps 2004 5 17.08.2004 13:27
überprüfen ob user bereits eingeloggt ist Simbo PHP Tipps 2004 1 09.07.2004 01:56
user online PHP Tipps 2004 4 30.06.2004 23:05
User online Simon9990 PHP Tipps 2004 8 17.06.2004 00:25
user überprüfen PHP Tipps 2004 1 16.06.2004 16:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php überprüfen ob user online, php online prüfen, php prüfen ob user online, php prüfen wer online ist, php online überprüfen, prüfen ob user online php, php prüfen ob user online ist, php überprüfen ob user angemeldet, http://www.php.de/php-einsteiger/50232-ssoeberpruefen-ob-user-online.html, php online überprüfung, überprüfen ob jemand online ist, überprüfen ob user online, überprüfen ob user online php, user online php, icq online überprüfen, php online benutzer, icq überprüfen ob jemand online ist, icq online prüfen, php prüfen kunde online, php prüfen ob user angemeldet

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum