Kom ihåg mig?
Home Menu

Menu


Räkna nedladdningar av en fil

Ämnesverktyg Visningsalternativ
Oläst 2007-08-14, 09:39 #1
clirres avatar
clirre clirre är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2005
Inlägg: 1 035
clirre clirre är inte uppkopplad
Har WN som tidsfördriv
clirres avatar
 
Reg.datum: Nov 2005
Inlägg: 1 035
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...
clirre är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 09:52 #2
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Enklaste sättet är väl egentligen att titta i webserverns accessloggar. Där kan du ju se vilka filer som laddas ner...
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 11:39 #3
JLEs avatar
JLE JLE är inte uppkopplad
Flitig postare
 
Reg.datum: Jul 2007
Inlägg: 382
JLE JLE är inte uppkopplad
Flitig postare
JLEs avatar
 
Reg.datum: Jul 2007
Inlägg: 382
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;
JLE är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 11:46 #4
magics avatar
magic magic är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2006
Inlägg: 488
magic magic är inte uppkopplad
Flitig postare
magics avatar
 
Reg.datum: Jan 2006
Inlägg: 488
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
magic är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 11:51 #5
clirres avatar
clirre clirre är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2005
Inlägg: 1 035
clirre clirre är inte uppkopplad
Har WN som tidsfördriv
clirres avatar
 
Reg.datum: Nov 2005
Inlägg: 1 035
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!
clirre är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 14:06 #6
gsocs avatar
gsoc gsoc är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2007
Inlägg: 568
gsoc gsoc är inte uppkopplad
Mycket flitig postare
gsocs avatar
 
Reg.datum: Jun 2007
Inlägg: 568
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
gsoc är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-14, 14:15 #7
Weaver Weaver är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2006
Inlägg: 403
Weaver Weaver är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2006
Inlägg: 403
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.
Weaver är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 05:07.

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