gpt4 book ai didi

linux - Nginx:如何查看哪些文件处于下载状态?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:12 26 4
gpt4 key购买 nike

我还在等待答案。

我需要查看此时是否有人正在下载特定文件。最初的问题:我想知道什么时候有人中断下载文件。

服务器配置:

server 
{

listen 80;
server_name mysite.com;

location /ugp/
{
alias /www/ugp/;
}
break;
}

用户可以从 http://mysite.com/ugp/ 下载文件,例如 http://mysite.com/ugp/1.mp3 .

更新

如何分析access.log 并不是很明显。有些浏览器会在用户停止下载时发送 206 代码 (Google Chrome),有些则不会(HTC 播放器、移动应用程序):

85.145.8.243 - - [18/Jan/2013:16:08:41 +0300] "GET /ugp/6.mp3 HTTP/1.1" 200 10292776 "-" "HTC Streaming Player htc_wwe / 1.0 / htc_ace / 2.3.5"
85.145.8.243 - - [18/Jan/2013:16:08:41 +0300] "GET /ugp/2.mp3 HTTP/1.1" 200 697216 "-" "HTC Streaming Player htc_wwe / 1.0 / htc_ace / 2.3.5"
85.145.8.243 - - [18/Jan/2013:16:09:44 +0300] "GET /ugp/7.mp3 HTTP/1.1" 200 4587605 "-" "HTC Streaming Player htc_wwe / 1.0 / htc_ace / 2.3.5"

最佳答案

为了提供更大的灵 active ,您可以添加一个 PHP 服务器,并发布像

这样的 URL
  http://mysite.com/download.php?file=2.mp3

download.php 从它的位置读取文件(例如/var/www/files/2.mp3),有一个建议的代码。 ( Headers )

<?php

// Here you know precisely that a download is requested

$path = '/home/var/www/files';
$file = "$path/" . $_GET['file']; // check user input!
$size = filesize($file);
$read = 0;

$state = 'downloading ' . $file;

// echo headers for a binary file download

@ $f = fopen ($file, 'r');
if ( $f ) {
// Output 100 bytes in each iteration
while (($chunk = fread($f, 100)) !== false) {
// specify somewhere $state, still downloading
echo $chunk;
$read += strlen($chunk);
}
fclose ($f);
}
if ($read >= $size)
$state = 'done';
else
$state = 'fail';
?>

这是提供算法的示例 - 完全测试!但应该与下载代码非常接近(通常使用 readfile,但它会一次性读取文件)

关于linux - Nginx:如何查看哪些文件处于下载状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com