PHP / MySQL Dosya indirme süresi

3 Cevap php

Ben MySQL sunucuya bir istek göndererek PHP indirme süresini bulmak istiyorum. Ben dosyayı indirmek için bir href link ile bir tablo var. Ben indirmek için tıklayın eğer indirme süresi bir tablo dosya adının yanında göstermelidir. Herkes bana yardım edebilir misiniz? Bugün benim son tarih. Benim kodunu kontrol edin:

<?php
$con = mysql_connect("localhost","mt","mt");

mysql_select_db("mt", $con);
$d=date("d/m/Y H:i:s");
$result = mysql_query("SELECT * FROM mt_upload");
echo "<table BORDER=2 BORDERCOLOR=RED>
<tr>
<th>FileName</th>
<th>FilePath</th>
<th>Uploaded Date/Time</th><th>Download Date/Time</th>
</tr>";
while($row = mysql_fetch_array($result))
   {
echo
 "
<tr>

<td>". $row['FileName'] . "</td> 
 <td ><a  href=../sites/default/files/ourfiles/". $row['FileName']."  >Download</a></td>
<td>".$row['DateTime']."</td><td>$d</td>
</tr>" ;
  }
echo "</table>";
mysql_close($con);

?>

3 Cevap

Tamam, şimdi ben OP'ın Yorumlarınız dayalı soruyu anlıyorum. Soru bir kullanıcı bir dosyayı karşıdan yoktu ne zaman anlamaya nasıl olduğunu. Bu durum buysa, uygun içerik başlığı ile akımına dosyanın içeriğini döndürür sonra, indirme bağlantısı bir php script olması gerekiyor ve db içine zamanda yazmak istiyorum.

Bkz readfile.

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

Yapmanız gereken tek şey bazı parametre olarak dosya adı geçmesi ve DB içine şimdiki zaman yazmaya.

Eğer filesize kullanmak gerekir ve bazı hesaplama yaparak indirmek için zamanı değerlendirmek bazı kod ihtiyacınız varsa bu kullanıcı hızı ve sunucu arasındaki tüm ağ üzerinde bağlı olduğundan, size tam olarak ne zaman bilemeyiz kullanıcı.

$filesize = filesize($yourfile);
$time_for_modem = $filesize * 8 / (56*1024);
$time_for_adsl = $filesize * 8 / (5*1024*1024);
$time_for_t3 = $filesize * 8 / (44*1024*1024);

function convertSecondToTime($sec){
  $hour = floor($sec/60)
  return $hour . 'hours and ' . ($sec%60) . 'minutes';
}

Modem zaman 56kbps bağlantısı, adsl, 5 mbps, T3 44 mbps bağlantı içindir.

Ben çok emin değilim, ama PHP ile mümkün olduğunu sanmıyorum.

Ben bir PHP sayfasını açtığınızda, web sunucusu bana sayfasını verir. Ben dosyaya xyz.abc indirme söylemek bir linke tıkladığınızda, o aslında webserver başka istek ve güncel PHP sayfası bu yer değildir. Geçerli PHP sayfası sadece bağlantıyı sahipliği yapıyor.

Ben linke tıkladığınızda, web sunucusu dosyayı bulur ve istemciye gönderir. Bu sayfa hizmet veren web sunucusu ve o dosya indirmek için soket açtı ve bu soket kapalı var ne zaman bilir beri zaman takip edebilirsiniz web sunucusu.

Herkes bir PHP komut dosyası aracılığıyla bunu nasıl biliyorsa, ben de bildirin lütfen.