2013-10-26 2 views
2

Я установил скрипт загрузки с PHP на моем сервере, который проверяет некоторые детали, прежде чем позволить пользователю загружать файлы через Apache (X-Sendfile). Файлы находятся за пределами Document-Root.Более медленные загрузки через Apache, чем с файлом чтения PHP

код для загрузки с Apache и модуля X-SendFile является:

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

При использовании Apache и X-SendFile я есть скачать-скорость 500 кБ/с с моим клиентом. Я также тестировал его с помощью Apache и без X-Sendfile с тем же файлом в корне Document - тоже самое!

Так я проверил загрузки и тот же файл, с тем же клиентом, та же инфраструктура с обеих сторон и тот же интернет-соединение через несколько секунд с помощью PHP с ReadFile:

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); 

На этот раз download- скорость была 9.500 kB/s!

Я повторил этот тест, используя оба варианта более чем несколько раз, и каждый раз при каждом повторении результат был одинаковым. Единственная разница, кроме скорости загрузки, - это время ожидания в несколько секунд (в зависимости от размера загруженного файла) при попытке использования метода чтения PHP. При повторном методе readfile PHP время ожидания больше не отображается. Скорее всего, потому, что он был сохранен в памяти после первого раза.

Я использую профессиональную HP Raid-System на сервере, которая имеет среднюю локальную скорость 800 МБ/с, поэтому причиной этого не может быть Diskspeed. Также я не нашел никаких параметров сжатия или диапазона в httpd.conf Apache.

Может ли кто-нибудь из вас объяснить, почему существует такая большая разница в скорости загрузки и как это можно изменить?

Заранее спасибо.

  • Сервер: 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 Мбит/с

ответ

6

РЕШЕНИЕ:

httpd.conf, включите линии "EnableSendfile от"

+0

из любопытства, какие была скорость отправки файлов, как только вы это сделали? –

+0

То же, что и с файлом чтения PHP (= 9,500 кБ/с или 76 Мбит/с). – PhilG

Смежные вопросы