Jeder Besuch meiner Website aktualisiert den individuellen Trefferzähler eines Benutzers und aktualisiert eine Spalte für time()
basierend auf ihrer IP-Adresse und ID, die in einem Cookie gespeichert sind. Also, wenn die Daten zur Ausgabe kommen, was eine effizientere Art und Weise meiner folgenden Code mit weniger Datenbankaufrufe, wie es im Wesentlichen eine Kopie von sich selbst:Finden Sie heraus, wie viele Benutzer in PHP online sind?
<?
$last1Min = time()-60;
$last5Mins = time()-300;
$last1Hr = time()-6000;
$last1Dy = time()-144000;
$last1Wk = time()-1008000;
$last1Mnth = time()-30240000;
//last1Min
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last1Min";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last minute: " . $rows['COUNT(*)'] . "<br />\n";
}
//last5Mins
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last5Mins";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last 5 minutes: " . $rows['COUNT(*)'] . "<br />\n";
}
//last1Hr
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last1Hr";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last hour: " . $rows['COUNT(*)'] . "<br />\n";
}
//last1Dy
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last1Dy";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last day: " . $rows['COUNT(*)'] . "<br />\n";
}
//last1Wk
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last1Wk";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last week: " . $rows['COUNT(*)'] . "<br />\n";
}
//last1Mnth
$sql = "SELECT COUNT(*) FROM usersonline WHERE lastOnline > $last1Mnth";
while($rows = mysql_fetch_array(mysql_query($sql))) {
echo "Users online in the last month: " . $rows['COUNT(*)'] . "<br /><br />\n";
}
Wenn es eine effizientere Art und Weise ist, diese Daten zu präsentieren, I Ich möchte es erweitern, um nicht nur zu zeigen, wie viele Nutzer für jede dieser Messwerte auf meiner gesamten Website online sind, sondern die Daten für jede Seite meiner Website aufzuzeichnen und auszugeben.
Ja, das war, was ich für einen einzigen Datenbankaufruf wollte, aber wie Sie sagen, würde direkt mit einem Cron-Job und Cache verwendet werden. –