簡體   English   中英

通過Apache下載的速度比使用PHP readfile的下載速度慢

[英]Slower downloads through Apache than with PHP readfile

我已經在服務器上使用PHP設置了一個下載腳本,該腳本會在允許用戶通過Apache下載文件(X-Sendfile)之前檢查一些詳細信息。 文件不在文檔根目錄下。

使用Apache和X-Sendfile模塊下載的代碼是:

header("X-Sendfile: $fullpath");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$link_file\"");

使用Apache和X-Sendfile時,我的客戶端的下載速度為500 kB / s 我還使用Apache對其進行了測試,而沒有X-Sendfile,並且在文檔根目錄中使用了相同的文件-這里也是一樣!

因此,我測試了幾秒鍾后通過帶有readfile的PHP通過相同的客戶端,相同的兩側基礎結構以及相同的Internet連接下載相同的文件:

header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/octet-stream");
header("Content-Length: ".(string)(filesize($fullpath)));
header("Content-Disposition: attachment; filename=\"$link_file\"");
readfile($fullpath);

這次下載速度為9.500 kB / s

我多次使用這兩個選項重復了此測試,每次嘗試的結果都是相同的。 嘗試使用PHP readfile方法時,除了下載速度之外,唯一的區別是等待時間為幾秒鍾(取決於下載文件的大小)。 立即重復PHP readfile方法時,等待時間不再出現。 最有可能是因為它是第一次存儲在內存中。

我在服務器上使用專業的HP Raid系統,該計算機的平均本地速度為800 MB / s,因此無法使用Diskspeed。 我也沒有在Apache的httpd.conf中找到任何壓縮或帶寬設置。

誰能解釋為什么下載速度有如此大的差異,以及如何更改?

先感謝您。

  • 服務器:Windows Server 2008 R2 Apache / 2.2.21(Win32)PHP / 5.4.20
  • 客戶端:Windows 7 Ultimate x64 Google Chrome 30.0.1599.101 LAN> 100 Mbit / s

解:

httpd.conf,打開“ EnableSendfile off”行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM