2013-03-29 4 views
1

У меня проблема с загрузкой загрузок с нашего сайта. Большие файлы просто не будут загружены полностью. Загрузка остановится где-то посередине ... Пример this file (размер cca 172MB) не будет загружен в полном размере (есть и другие файлы).Загрузка файла PHP с помощью mod-xsendfile не загружает весь файл

Я переключился с целиком PHP-базовой загрузки сценария, один включен в рамках Kohana:

return download::force($filePath);

к решению мод-xsendfile. Я читал о возможных проблемах с скриптами загрузки на PHP, а большие файлы и камеры по mod-xsendfile - правильное решение ... Ну похоже, что нет, я получаю тот же результат с обоими методами. Моя текущая реализация загрузки с использованием заголовков mod-xsendfile выглядит так:

header("X-Sendfile: $filePath"); 
header("Content-type: application/octet-stream"); 
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"'); 

Что я делаю неправильно?

UPDATE:

Я использовал this HTTP sniffer проверить заголовки ответа и это результат, если это помогает решить эту проблему.

Status: HTTP/1.1 200 OK 
Server: Apache 
Set-Cookie: dewesoftsession=63ms5j67kc231pr4bpm8cmg1f7; expires=Sat, 30-Mar-2013 11:36:59 GMT; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache  
Set-Cookie: dewesoftsession=63ms5j67kc231pr4bpm8cmg1f7; expires=Sat, 30-Mar-2013 11:36:59 GMT; path=/ 
Content-Disposition: attachment; filename="DEWESoft_FULL_7_0_5.exe" 
Last-Modified: Mon, 24 Sep 2012 12:50:12 GMT  
ETag: "25814de-ac291e9-4ca7207c7fcd9" 
Content-Type: application/octet-stream 
Content-Length: 180523497 
Date: Sat, 30 Mar 2013 09:37:01 GMT 
X-Varnish: 294312007  
Age: 2 
Via: 1.1 varnish  
Connection: close 
X-Varnish-Cache: MISS 
+0

Каковы заголовки ответов, которые вы получаете с сервера? –

+0

Как я могу проверить это? –

+0

Использование инструментов разработчика вашего браузера; под вкладкой сети. –

ответ

1

Через пару дней нам удалось найти причину проблемы. У лака есть параметр запуска send_timeout, который по умолчанию установлен в 600. При больших загрузках файлов вы можете запустить этот тайм-аут, что приведет к прерыванию загрузки.

Значительно увеличивая параметр send_timeout Varnish, вы сможете решить эту проблему.

+0

+1. Рад, что ты, наконец, понял это :) –