php读取文件MP3导致服务器响应减慢

php读取文件MP3导致服务器响应减慢,php,audio,download,Php,Audio,Download,我有一个用户项目,它有一个上传的mp3文件库,这些文件存储在httpdocs文件树之外,并通过php readfile()函数进行访问。 该函数可以工作,但页面本身的加载速度慢得不可思议 我有一个php文件,它被称为我在几个应用程序中使用的每个音频文件的src $sql='SELECT `name`,`file`, `filetype`,`access` FROM `'.$DBtable.'` WHERE `id`="'.intval($_GET['file']).'";'; $database

我有一个用户项目,它有一个上传的mp3文件库,这些文件存储在httpdocs文件树之外,并通过php readfile()函数进行访问。 该函数可以工作,但页面本身的加载速度慢得不可思议

我有一个php文件,它被称为我在几个应用程序中使用的每个音频文件的src

$sql='SELECT `name`,`file`, `filetype`,`access` FROM `'.$DBtable.'` WHERE `id`="'.intval($_GET['file']).'";';
$database->setQuery($sql);
$file=$database->loadObject();
//Check access against my access only if the file is restricted
if($file->access>0)
{
$access=isAuth($database);
    if($access<$file->access)
        {
        die('Restricted Access');
        }
}
    $uploaddir=BASE_URI;
$filename=$file->file;
    switch ($file->filetype) { 
  case "pdf": $ctype="application/pdf"; break; 
  //case "exe": $ctype="application/octet-stream"; break; 
  case "zip": $ctype="application/zip"; break; 
  case "doc": $ctype="application/msword"; break; 
  case "xls": $ctype="application/vnd.ms-excel"; break; 
  case "ppt": $ctype="application/vnd.ms-powerpoint"; break; 
  case "gif": $ctype="image/gif"; break; 
  case "png": $ctype="image/png"; break; 
  case "jpeg": 
  case "jpg": $ctype="image/jpg"; break;
  case "mp3": $ctype="audio/mpeg";break;
  case "ogg": $ctype="audio/ogg"; break; 
  default: $ctype="application/force-download"; 
} 
header('Content-type: '.$ctype);
header('Content-Disposition: attachment; filename="'.$file->name.'.'.$file->filetype.'"');
readfile($uploaddir.$filename);
$sql='SELECT`name`、`file`、`filetype`、`access`FROM`.$DBtable.`WHERE`id`=''.intval($\u GET['file'])。';';
$database->setQuery($sql);
$file=$database->loadObject();
//仅当文件受到限制时,才根据我的访问权限检查访问权限
如果($file->access>0)
{
$access=isAuth($database);
如果($accessaccess)
{
die(“受限访问”);
}
}
$uploaddir=基本URI;
$filename=$file->file;
开关($file->filetype){
案例“pdf”:$ctype=“application/pdf”;中断;
//案例“exe”:$ctype=“应用程序/八位字节流”;中断;
案例“zip”:$ctype=“application/zip”;中断;
案例“doc”:$ctype=“application/msword”;中断;
案例“xls”:$ctype=“application/vnd.ms excel”;中断;
案例“ppt”:$ctype=“application/vnd.ms powerpoint”;中断;
案例“gif”:$ctype=“image/gif”;中断;
案例“png”:$ctype=“image/png”;中断;
案例“jpeg”:
案例“jpg”:$ctype=“image/jpg”;中断;
案例“mp3”:$ctype=“audio/mpeg”;中断;
案例“ogg”:$ctype=“audio/ogg”;中断;
默认值:$ctype=“应用程序/强制下载”;
} 
标题('Content-type:'.$ctype);
标题('Content-Disposition:attachment;filename=“”.$file->name.'.$file->filetype.'”);
readfile($uploaddir.$filename);
页面本身正在调用

<img data-src="file.php?source=images&file=668" class="thumbnail" parent="667">
<audio class="gallery_audio" controls="controlls">
<source src="audio_file.php?file=123" type="audio/mpeg">
    <source src="audio_file.php?file=124" type="audio/ogg">
Your browser does not support the audio element.
</audio>

您的浏览器不支持音频元素。
其中file.php和audio_file.php是加载php代码的文件的副本。 我尝试创建这些文件的多个副本来分散http请求,认为可能是服务器被对同一文件的重复请求超载了,*只有10个,但仍然没有love。此外,FF似乎始终比IE或Chrome更好地处理这一问题。 当我只加载图像时,即使请求量大得多,它的响应也似乎更好。这些是非常小的音频文件。50-90KB,因此大小不应该是主要问题


是否有更好的音频文件方向?延迟加载有助于处理图像,但似乎对音频没有多大帮助。

您要下载的文件有多大?mp3文件大约有70-90Kb。。ogg有点小。。。然而,我遇到的奇怪的事情是,如果我从页面中删除音频文件并用jpg替换它们,加载速度会更快,即使jpg文件更大……这似乎与html5音频标记有关,或者mp3文件的php readfile()函数我会排除mp3文件,您可以尝试使用microtime()为了给readfile执行计时并排除其原因,然后最终处理音频标签。遗憾的是,让客户端可以通过web界面上传mp3文件供公众下载是本项目规范的一部分。我将尝试microtime()调试,看看读取该类型的文件是否有问题。