WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Räkna nedladdningar av en fil (https://www.wn.se/forum/showthread.php?t=22863)

clirre 2007-08-14 09:39

Hej,

Jag har en länk på www.kopabostadguiden.se/lathunden.php som leder till en Excel-fil. Jag gjorde en kodsida som räknade antalet klick på den (mha en go.php?raknaklick=excelbladet som innehöll en Header(excelfilen)...) som verkade fungera bra men det var inte speciellt stabilt.

Misstänker att det borde finnas nåt betydligt lättare sätt att räkna klick på denna länk, alt räkna nedladdningarna direkt. Någon som vet/kan? Allra helst en lösning i php.

// Christoffer

Edit: Jag har sökt, men inte hittat nåt som passar för denna fråga...

eg0master 2007-08-14 09:52

Enklaste sättet är väl egentligen att titta i webserverns accessloggar. Där kan du ju se vilka filer som laddas ner...

JLE 2007-08-14 11:39

Jag räknar klick på ett antal hundra tusen filer på det sätt du beskriver. Dvs ett php script som levererar filen.

Gör du kanske något fel? Sätter du rätt content-type? Sätter du Content-Length rätt? Såhär gör jag:

$fname = filen på server.
$filename = filnamnet.

Kod:

    // Fetch and send the file
    $file = file_get_contents($fname);
    header("Content-type: application/octet-stream\n");
    header("Content-disposition: attachment; filename=\"$filename\"\n");
    header("Content-transfer-encoding: binary\n");
    header("Content-length: " . filesize($fname));
    print $file;


magic 2007-08-14 11:46

Ditt sätt är nog bäst, det är det jag använder mig av, men jag gör det hela osynligt med mod_rewrite.

RewriteEngine on
RewriteRule ^(.*) ../download.php?filename=$1

clirre 2007-08-14 11:51

Tack för alla svar. Känner att jag borde gräva lite djupare i min php-fil och inte köra så mycket trial-and-error programmering.

Ska testa det ni beskriver och läsa på lite mer om detta. Stort tack!

gsoc 2007-08-14 14:06

http://planetsourcecode.com/vb/scripts/Sho...Id=916&lngWId=8

En snabb sökning på google ger massvis med olika kåder som just demonstrerar detta...


Har du tillgång till servern via skal, så kör:
Kod:

cat apacheloggfil | grep "Filen" | wc -l

Weaver 2007-08-14 14:15

Citat:

Originally posted by JLE@Aug 14 2007, 11:39

Såhär gör jag:
fname = filen på server.
filename = filnamnet.
Kod:

  // Fetch and send the file
  file = file_get_contentsfname;
  headerContent-type application/octet-streamn;
  headerContent-disposition attachment; filename=filenamen;
  headerContent-transfer-encoding binaryn;
  headerContent-length . filesizefname;
  print file;


Ur performance synvinkel, är det inte bättre att låta webbservern sköta själva utskicket av filen. Den är mycket effektivare på det än vad PHP är. Låt bara din download.php-fil (eller vad den heter) räkna "klicket" till en databas (delayed insert). Gör sedan en header redirect till filen och låt webbservern ta över.


Alla tider är GMT +2. Klockan är nu 02:01.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson