我有一個簡單的電影文件(MKV),我要送過nginx的發送的所有數據。NGINX發送大文件不會在某些情況下
我的Nginx的配置如下
user nginx;
worker_processes auto;
worker_rlimit_nofile 300000;
events {
worker_connections 16000;
use epoll;
accept_mutex on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip off;
access_log off;
keepalive_timeout 10;
client_max_body_size 0;
server {
listen 5050;
index index.html index.htm;
root /var/www/;
server_tokens off;
chunked_transfer_encoding off;
if ($request_method !~ ^(GET|POST)$) {
return 200;
}
}
}
,如果我嘗試從快速連接(例如使用wget的從服務器)下載電影的電影被成功下載。
如果我嘗試使用帶有-re參數(原始幀)ffmpeg的使用速度較慢的連接,例如獲取電影,它只會下載電影的一半。當然,如果我使用wget並且將下載速度調整爲比正常情況低得多,那也是一樣。
從nginx的連接一段時間後關閉,不發送整個文件,我不明白爲什麼會這樣,爲什麼,如果我有一個快速的連接不會發生。
編輯
編輯我的帖子完全是,因爲在運行一些測試後,我發現,這個問題是由NGINX來,而不是從PHP作爲連接直接讀取影片之後仍然關閉來自nginx。
你確定你沒嘗試通過調用設置'max_execution_time'到''0'的set_time_limit(0)'在腳本的乞討?下載開始後,慢速連接失敗需要多長時間? –
你好,我編輯我的帖子,因爲它不是PHP的問題,我認爲。這部電影是20分鐘,並且總是在8分鐘和幾秒鐘(通常爲30分鐘)的同一時間結束。 – user3393046
你必須用不同的方式來完成它,並使用Nginx [XSendfile](https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/)。我做到了,並且我有一個** 5GB **文件傳輸約** 22 **分鐘到目前爲止沒有中斷在** 20K/s **使用'wget'。如果你願意,我可以用我的工作例子寫一個答案。 –