【发布时间】:2015-02-11 16:10:46
【问题描述】:
我需要允许下载文件,但必须跟踪每个用户下载文件的次数。
我在这里有一段简单的代码,允许用户下载文件,然后回调在完成后为该用户增加数据存储区中的计数器。
如果用户不使用下载管理器,这可以正常工作。但如果它们是(即:DownThemAll),那么管理器会发出多个 HTTP 请求,并且每次都会调用回调。这会增加下载次数并使其不可靠。 我尝试通过观察会话变量来短路多个请求 - 从理论上讲,这会将多个请求减少到一个。但似乎 DownThemAll 没有跨请求共享同一个会话,所以它不起作用。
有没有办法让它工作?
return \Response::stream(function() use ($stream, $file, $callback) {
while (!feof($stream)) {
echo fread($stream, 1024);
}
fclose($stream);
Log::info('Resource downloaded', ['resource' => $file]);
if (is_callable($callback)) {
call_user_func($callback);
}
}, 200, $headers);
【问题讨论】:
标签: php laravel download download-manager