dosya indirme süresi günlüğü

3 Cevap php

Bu tarayıcı ile bir web sunucusundan bir dosya indirmek için gereken zaman (rekor) oturum için herhangi bir yolu var mı? Dosya HDD üzerine yazılır ve çevre LAMP.

Teşekkürler.

3 Cevap

Elbette var. Apache dosyası (bu durumda ise daha fazla talimatlar için sormak) PHP tarafından sunulan ya da sadece bu gibi dosyayı almak için bir PHP komut dosyası kullanmak için olduğunu bildirmek için mod_rewrite kullanımı ya var olacak:

http://youserver.com/download.php?filename=mypicture.jpeg

Ve sonra download.php böyle olabilir olabilir:

<?php
// gets the starting time
$time_start = microtime(true);

// WATCHOUT! THIS IS NOT SECURE! EXAMPLE ONLY.
#$filename = $_GET['filename'];

// gets the intro.mp3 file and outputs it to the user
$filename = "intro.mp3";
header('Content-type: audio/mpeg');
header('Content-Length: '.filesize($filename));
header('Content-Disposition: attachment; filename="intro.mp3"');
readfile($filename);

// gets the end time and duration
$time_end = microtime(true);

// write time to hdd, database, whatever
// ...
error_log("Processing time: ". sprintf("%.4f", ($time_end-$time_start))." seconds");
?>

$filename = $_GET['filename'] sadece bir örnektir ve insanlar sunucuya kesmek değil, böylece doğru kaçtı gerektiğini unutmayın lütfen.

EDIT:
Altered to check if it really worked - Mark made me question it! ;) Needed minor tweaking (especially on microtime) but yes, it does work!

Bir yolu proxy (mod_rewrite ile kolayca elde edilebilir) bir komut dosyası aracılığıyla indirme olacaktır. Bu (Content-Type başlığı için) bunlara karşılık gelen mime tipe haritalama uzantıları gibi tüm çalışmaları yapmak gerektiği anlamına gelir. Tarayıcınızdan bir dosya indirmeyi deneyin, ve gönderir başlıklarına bir göz atın; Eğer bu taklit gerekir. Siz örneğin kullanabilirsiniz. başlıklarını incelemek için web sniffer.net.

PHP bu tür bilgiler için erişim olurdu sanmıyorum. Ben Apache da anlatacağım eğer emin değilim, yoksa yöntem, aşağıdaki dosya gönderme tampon içine dökülüyor var, ama ben bu denemenizi öneririm sadece kadar da zaman olacaktır:

Eğer "% D" yönergesini dahil olduğu özel bir günlük tanımlayın, bu size "mikrosaniye, isteği sunmak için harcanan zaman" verir.