2008-10-01 3 views
8

Es ist erstaunlich, wie schwierig es ist, eine einfache, präzise Antwort auf diese Frage zu zählen zu finden:Der beste Weg, Datei-Downloads auf einer Website

  1. ich eine Datei haben, foo.zip, auf meiner Website
  2. Was kann ich tun, um herauszufinden, wie viele Personen auf diese Datei zugegriffen haben?
  3. ich verwenden könnte Tomcat ruft bei Bedarf

Update: Wenn Sie ein Skript empfehlen, schreiben, können Sie mich zu einem anständigen Punkt?

Antwort

10

Oder Sie könnten die Protokolldatei analysieren, wenn Sie die Daten nicht in Echtzeit benötigen.

cat /path/to/access.log | grep foo.zip | grep 200 | wc -l 

In Antwort auf Kommentar:

Die Log-Datei heruntergeladen auch enthält Bytes, sondern als jemand anderes darauf hingewiesen, diese spiegeln möglicherweise nicht die richtige Anzahl, wenn ein Benutzer auf der Client-Seite den Download abgebrochen.

+0

definitiv am einfachsten, wenn Sie Zugang zu den Protokollen haben –

+0

sagt Ihnen das, ob der Download abgeschlossen oder abgebrochen wurde? –

+0

-1. Bitte sehen Sie die nächste Antwort .. es ist einfacher als ein Protokoll zu analysieren – bobobobo

10

Der einfachste Weg wäre wahrscheinlich, anstatt direkt mit der Datei zu verknüpfen, mit einem Skript zu verknüpfen, das einen Zähler inkrementiert und dann an die fragliche Datei weiterleitet.

+0

Sie erhalten Download _attempts_, was ziemlich vernünftig ist. – bobobobo

+0

Für ein bisschen mehr Informationen ist der Link in [diese Antwort] (http://stackoverflow.com/a/16874980/1804173) ziemlich nützlich. – bluenote10

0

Verwenden Sie die Protokolle - jede GET-Anforderung für die Datei ist ein weiterer Download (es sei denn, der Besucher hat den Download aus irgendeinem Grund unterbrochen).

4

Mit der Antwort "Der einfachste Weg wäre wahrscheinlich, anstatt direkt mit der Datei zu verknüpfen, mit einem Skript zu verknüpfen, das einen Zähler inkrementiert und dann an die fragliche Datei weiterleitet."

Dies ist zusätzlich:

$hit_count = @file_get_contents('count.txt'); 
$hit_count++; 
@file_put_contents('count.txt', $hit_count); 

header('Location: http://www.example.com/download/pics.zip'); // redirect to the real file to be downloaded 

Hier count.txt ist eine einfache Textdatei, die Zählerinformationen gespeichert. Sie können es in einer Datenbanktabelle zusammen mit downloadable_filename.ext auch speichern.

+0

Wie kann ich? Verknüpfung zu einem Skript – cssGEEK