In eigentlich allen Scripten hat man das gleiche Problem. Jeder Seitenaufruf resultiert ein UPDATE in der Datenbank. D.h. der View-Counter der Seite wird bei jedem Aufruf um 1 hochgezählt.
Um das zu verhindern, macht man sich die Wahrscheinlichkeitsrechnung zu nutze. Wir erstellen also die folgende Funktion: Code:
function update_rand() { switch (mt_rand(2, 5)) { case 2: if (mt_rand(1, 2) == 2) { return 2; } break; case 3: if (mt_rand(1, 3) == 3) { return 3; } break; case 4: if (mt_rand(1, 4) == 4) { return 4; } break; case 5: if (mt_rand(1, 5) == 5) { return 5; } break; } return false; }
Und dann machen wir die Datenbankabfrage abhängig vom Zufall und erhöhen den View-Counter um den entsprechenden Zufallswert: Code:
// increment the number of views if ($views = update_rand()) { $sql = 'UPDATE LOW_PRIORITY articles SET views = views + ' . intval($views) . ' WHERE id = ' . intval($id); $db->sql_query($sql, false, __LINE__, __FILE__); }
Wie man sieht, habe ich die UPDATE-Abfrage auf LOW PRIORITY eingestellt. Insbesondere bei hohen Lasten ist mir aufgefallen, dass die UPDATE-Abfrage von Views mit anderen SELECTs kollidiert und wie ein Stoppschild in der Prozessliste verweilt und sich so mit anderen SELECTs "anlegt" bis es zum Absturz des MySQL-Dienstes kommen kann. Hier fand ich den Tipp: http://mysqldatabaseadministration.blogspot.com/2007/01/update-lowpriority.html
Seit der Umstellung auf LOW PRIORITY kam es bei mir zu keinen Problemen mehr.
Dann fragt Ihr Euch sicher, wie beim Einsatz von Zufallszahlen überhaupt die richtigen Views herauskommen sollen. Daher erkläre ich kurz die oben genannte Funktion update_rand().
Jede Zahl kommt in 25% aller Fälle zum Tragen. Das führt aber nur in bestimmten Fällen (je nach Zahl) zum Erfolg: Zahl 2 = 50% Zahl 3 = 33% Zahl 4 = 25% Zahl 5 = 20%
D.h. von 100 Versuchen werden 25% auf die Zahl 2 zutreffen, aber nur in weiteren 50% der Fälle kommt es zum Einsatz der Zahl. D.h. die Zahl 2 wird in nur 12,5% aller Fälle zum Tragen kommen. Rechnet man wieder: Zahl 2 = 12,5% Zahl 3 = 8,25% Zahl 4 = 6,25% Zahl 5 = 5% Summe = 32%
D.h. in gerade mal 32% aller Fälle kommt es zu einem UPDATE in der Datenbank (Ersparnis von 68% aller Abfragen!).
Nun zur Genauigkeit dieser Wahrscheinlickeitsrechnung: 100 Aufrufe resultieren ohne diese Funktion 100 Views. In unserem Fall teilen sich diese 100 Aufrufe auf die jeweilige Zufallszahl wie folgt auf (gerundet): 13 Aufrufe * 2 = 26 Views 8 Aufrufe * 3 = 24 Views 6 Aufrufe * 4 = 24 Views 5 Aufrufe * 5 = 25 Views
Macht in der Summe 99 Views. D.h. die Ergebnisse weichen nur minimal vom Original ab und wer interessiert sich schon wirklich dafür, ob ein Thema 100 mal oder 99 mal aufgerufen wurde.
Diese Technik bietet sich übrigens auch bei Counter-Diensten an, wenn man Impressionen zählt. Da würde ich die Formel sogar noch weiter ausbauen, dass sie noch seltener zutrifft.
Wenn Dir die Beiträge zum Thema "UPDATE View-Counter per Zufall (Performance Tipp)" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:
Registrierte Mitglieder genießen die folgenden Vorteile: - kostenlose Mitgliedschaft - keine Werbung - direkter Austausch mit Gleichgesinnten - neue Fragen stellen oder Diskussionen starten - schnelle Hilfe bei Problemen - Bilder und Videos hochladen - und vieles mehr...
Hallo Leute
Wie ihr sicher gelesen habt, muss mein CN2 bald zu Honda um diesen Blöden schaden reparieren zu lassen.
heute hat mein Honda meister mir ein angebot gemacht
Rear View inkl einbau : 680€
PDC inkl Einbau: 440€
Was würdet...
Hab gestern meinen accord wieder bekommen. Bin sehr zufrieden. Lediglich die kamera muss neu justiert werden, ich sehe auf den display eine schwarze ecke, das ist die ecke von der nummernschildaussparung.
In dem anderen Thread werde ich die pin...
Hallo,
ich habe mir überlegt, dass ich vlt. mal wieder Abends kurz ne Runde CS spielen könnte.
Das letzte mal, als ich CS gespielt habe, war es Version 1.4 oder so.
Also schon "etwas länger" her..
Was benötige ich denn nun eigentlich,...
alt, aber immer noch Lustig :D
... an denen man erkennt, das man zuviel Counter-Strike zockt:
1. Man verläßt die Wohnung nur durch den Lüftungsschacht.
2. Man betritt seine Wohnung nicht bevor man eine Flashbang durch die Tür geschmissen...
Hallo alle zusammen,
ich habe einen Super-Tipp, wie man sich noch etwas dazu verdienen kann, wenn man einen Kredit abschließen will oder abgeschlossen hat! Ich habe bei so einer Marktforschungsfirma den Kreditprozess bei meiner Bank bewertet und dafür...
Ich bin ja öfter auf der Seite des deutschen Marken- und Patentamtes unterwegs, finde dort oft hilfreiche Informationen und möchte euch das keinesfalls vorenthalten, da hier auch öfter mal Fragen dazu auftauchen. die Informationen des DPMA sind ja aus...
Ich hätte gerne fragen beantwortet um meine nsr gut zu behandeln!!!!
1)wann sollte ich sie in den zweiten gang schalten(drehzahl) und kann ich die kupplung springen lassen wenn ich schalte,weil ich dies immer mache.
2)was für öle müssen wann aufgefült...
Ich bekomme mittlerweile immer öfter Anfragen wie "ich habe in einem Forum etwas gekauft und bezahlt, aber der Verkäufer meldet sich nicht" etc.
Dabei werde ich auf Grund meiner Erfahrung gerne zu Rate gezogen. Da ich aber keine...