PHP / MySQL中的文件下载时间

时间:2009-10-21 04:46:55

标签: php mysql

我想通过向MySQL服务器发送请求来查找PHP下载时间。我有一个带有href链接的表来下载文件。如果我单击下载,则下载时间应显示在表格中的文件名旁边。

请查看我的代码:

<?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 个答案:

答案 0 :(得分:3)

好的,现在我根据OP的评论理解了这个问题。问题是如何确定用户下载文件的时间。如果是这种情况,下载链接需要是一个php脚本,它会在时间内写入db,然后将文件内容返回到具有适当内容标题的流中。

请参阅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;
}
?>

您所要做的就是将文件名作为参数传递,并将当前时间写入DB。

答案 1 :(得分:1)

如果你需要一些代码,你应该使用filesize,你可以通过计算来评估下载时间,你不知道确切的时间,因为它取决于用户速度和服务器之间的所有网络和用户。

$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';
}

调制解调器时间为56kbps连接,adsl为5 mbps,T3 44 mbps连接。

答案 2 :(得分:0)

我不太确定,但我认为不可能通过PHP。

当我打开PHP页面时,网络服务器会给我页面。当我点击下载xyz.abc文件的链接时,它实际上是对Web服务器的另一个请求,并且当前的PHP页面不参与此操作。当前的PHP页面只是托管链接。

当我点击链接时,网络服务器会找到该文件并将其发送给客户端。它是为网页提供服务的网络服务器,它是可以跟踪时间的网络服务器,因为它知道何时打开文件下载套接字以及何时关闭该套接字。

如果有人知道如何通过PHP脚本来做,请告诉我。