Door
P.v.Denzel
op 30-09-2004 18:57
gewijzigd op 30-09-2004 18:58
3.412 views
Dag mensjes!!
Ik heb links onder bij de trackers, een 'wie is online' dingetje gemaakt.. Deze kijkt wie er online zijn.. Je ziet de members hun namen en je ziet hoeveel gewone bezoekers er online zijn..
Misschien was het je nog niet opgevallen, maar hij is er! Hoop dat het wat toevoegt aan de site :)
[edit]
dit topic door Bas Kreleger, zit bij Peter de super no0b en daar was ik nog ingelogd :)
[/edit]
<?
function ip() {
// functie voor bepalen ip, nu eigenlijk niet belangrijk
}
define('IP', ip());
function users_online($minutes = 5) {
mysql_query("DELETE FROM online WHERE ip = '".IP."' OR timestamp < (NOW() - 60 * ".$minutes.")");
mysql_query("INSERT INTO online VALUES (NULL, '".IP."', NOW())");
$result = mysql_query("SELECT COUNT(DISTINCT ip) AS users FROM online");
$row = mysql_fetch_object($result);
return $row->users;
}
?>
Met deze tabel:
CREATE TABLE `online` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(15) NOT NULL default '',
`timestamp` timestamp(14) NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Deze werkt dus op IP adres, niet echt betrouwbaar maar goed..
Is redelijk eenvoudig aan te passen lijkt me :)
Ja dat wel, je zou ook met SELECT en mysql_num_rows() kunnen controleren of de rij nog bestaat en zo ja een UPDATE doen en anders een INSERT. Maar dat vind ik weer zo omslachtig, zo'n drukbezochte sites heb ik toch niet :P
Je laat het zelf al zien, 3 stappen tegen 2 stappen. Ik denk dat het sneller is om iets er gewoon uit te mikken en er opnieuw in te zetten.
Anders probeer je er iets uit te halen wat dan weer gecontroleerd moet worden, en dan wordt er iets aangepast of ingevoerd.
Bij de delete/insert-oplossing hoeft PHP geen extra 'rekenwerk' te doen. Bij de select/controle/update_insert-oplossing heb je PHP wel nodig.
Of het iets uit maakt...ik zou het niet weten. Kan een keer een scriptje maken en de gemiddelde tijd bij beide maniere berekenen. Maar zal geen wereldschokkende resultaten opleveren :P