我想通过向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);
答案 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脚本来做,请告诉我。