2012-03-28 6 views
1

Ich sehe auf Websites, dass sie manchmal eine Statistik haben, die zeigt, wie viele Ansichten ein Artikel oder eine Datei heruntergeladen hat, hatte in der letzten Woche. Ich denke, Download.com macht so etwas. Ich habe mich gefragt, wie sie das machen. Verfolgen sie tatsächlich jeden Tag Downloads oder fehlt mir etwas wirklich Grundlegendes?So generieren Sie Statistiken über Artikelansichten letzte Woche

Machen sie so etwas wie drei Zeilen namens total_downloads, last_week_downloads, this_week_downloads. Dann jede Woche den Wert von this_week_downloads in last_week_downloads kopieren und this_week_downloads auf 0 zurücksetzen?

Antwort

1

Es gibt ein paar Möglichkeiten, es zu tun, je nachdem, was Ihr versucht, heraus zu bekommen der Statistiken.

Eine Möglichkeit besteht darin, eine visits-Spalte in Ihre Tabelle aufzunehmen. Erhöhen Sie diese Zahl dann jedes Mal, wenn die Seite des Artikels geladen wird. Dies ist jedoch nicht sehr gut für die Anzahl der Ansichten der letzten Wochen geben. Sie können dies auf 2 Arten tun:

1) eine andere Spalte in Ihrer Tabelle macht das gleiche wie visits, aber führen Sie einen Cron-Job, um es zurück auf 0 jede Woche.

2) schaffen eine andere Tabelle, die article_id, ip_address und timestamp hält Sie eine Aufzeichnung jedes Mal, wenn jemand den Artikel besucht, speichert ihre IP-Adresse einfügen würde (so dass Sie grob Seitenaufrufe und einzigartige Seitenaufrufe zu bekommen), und natürlich Mit dem Zeitstempel können Sie nur eine Untergruppe dieser Datensätze abfragen. Hinweis: Wenn Sie diese Methode verwenden, können Sie mehr Informationen für Statistiken speichern, dafür sind jedoch wesentlich mehr Serverressourcen erforderlich.

+0

Danke für die Info. Ich bin der Meinung, dass es besser ist, die Spalte hinzuzufügen und nur so zu rotieren, wie es notwendig ist, um zu vermeiden, dass dies zu serverintensiv wird. –

+0

@John Tangale Eine einzige MySQL-Daten kann jeden einzelnen Klick auf einer Website von einer Handvoll Kunden speichern, ohne zu schwitzen. Stellen Sie nur sicher, dass Ihre Tabelle nicht blockierend ist und Sie etwas wie "DELAYED" oder "LOW_PRIORITY" verwenden, um sicherzustellen, dass die Protokollierung unter starker Belastung den Server nicht beeinträchtigt. – Frankie

0

Die einfachste Art und Weise, dies zu tun ist assoziiert ein MySQL Feld neben Ihrem Artikel über die Datenbank und es nur zu erhöhen.

Angenommen, Sie wir retreiving Artikel 123 aus der Datenbank würden Sie so etwas wie dieses auf Ihrem Code haben:

<?php 
// this would increment the number of views 
$sql = "UPDATE table SET count_field=count_field+1 WHERE id=123"; 
... 
?> 
+0

Richtig ... das ist, was ich tun würde, um Gesamtansichten zu erhalten, aber nicht die Ansichten der vorherigen Wochen. –

+0

@John Tangale Blick auf Nick Antwort. Abhängig von der Menge an Daten, die Sie speichern möchten, behalten Sie nur einen Zähler und drehen ihn jede Woche oder Sie speichern alle Treffer für eine bestimmte Tabelle und ziehen dann abhängig von Ihrem Standortvolumen die Daten direkt von dort oder cachen die Daten vorab mit ein Cron Job ... was auch immer dir passt. Deine Logik ist richtig. – Frankie

Verwandte Themen