您应该使用处理程序来挂钩每个请求。这可以很容易地完成,但是您还应该从您的 php.ini 中提供文件。
更新
以下代码片段假设如下:
- 您在托管服务器上安装了一个典型的“LAMP 堆栈”
- 您的 Apache 配置“允许目录覆盖”(带有
.htaccess
文件)
- 您的 Apache 设置已
mod_rewrite
安装并启用
- Apache+PHP 拥有你在你的文件中创建的所有文件的读取权限
docroot
- 您的 PHP 版本至少为 5.5(或更高)
在服务器的docroot
文件夹中,创建以下文件:
.htaccess在您喜欢的文本编辑器中
打开文件,输入以下内容,然后保存:.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} !handler.php$
RewriteRule (.*) handler.php
handler.php
在您的文件中键入以下内容.handler.php
,然后保存:
<?
$over = $_SERVER['SERVER_PROTOCOL'];
$path = explode('?',$_SERVER['REQUEST_URI']);
$path = (($path == '/') ? '/home.html');
$extn = array_shift((explode('.',$path)));
$list = # array
[
'html' => 'text/html',
'css' => 'text/css',
'png' => 'image/png',
'js' => 'application/javascript',
];
$type = (isset($mime[$extn]) ? $mime[$extn] : 'text/plain');
if (file_exists(".${path}"))
{
if (is_dir(".${path}") || ($path == '/.htaccess'))
{
header("${over} 403 Forbidden");
echo "path: `$path` is forbidden";
exit;
}
header("${over} 200 OK");
header("Content-Type: ${type}");
header("Content-Length: ".filesize($path));
readfile($path);
exit;
}
header("${over} 404 Not Found");
echo "path: `$path` is undefined";
exit;
?>
对于每个请求,获取当前的microtime
.
然后,提供文件,(获取文件的 mime 类型,写入适当的标题:“Content-type”,然后简单地:readfile('path/to/file.mp3');
*其中 'path/to/file.mp3' 显然是:
$_SERVER['REQUEST_URI']
或一些重新路由 - 但是你想要它。
然后,再次获取微时间,现在,从后者中减去前一个微时间,您就有了提供文件所需的时间。
因此,完成此操作后,您现在可以在数据库中记录每个请求,或者在任何地方记录每个请求,并相应地指定字段名称。
我不确定需要多少细节,请相应地发表评论。