Jump to content

При скачивании больших файлов они обрезаются.

Featured Replies

Posted

В приложении Загрузки выложены большие файлы, размером до 900мб. Раньше всё работало нормально, люди точно их скачивали. А сейчас стали жаловаться что файлы битые. Я проверил - файлы обрезаются на 500 МБ (524 935 361 байт). Движок был 4.7.15, обновление до 4.7.16 не помогло.

В настройках вроде бы нигде нет лимита (да и было бы предупреждение, а не так что половина файла скачалась и обрыв).

В логах в админке никаких событий в это время не было.

В админке изучил отчёт phpinfo - нигде никаких лимитов в районе 500 МБ там нет.

Выключил в настройках антилич-защиту - не помогло.

Через Download Master в многопоточном режиме файл качается нормально. Урезал настройки Download Master для однопоточного скачивания - через 500 МБ - Socket disconnected.

Куда копать?

  • Author
37 минут назад, Zero108 сказал:

Что там с таймаутами у веб-сервера?

Где их смотреть? Виртуальный хостинг, cPanel, LiteSpeed.

Но врядли в таймаутах дело, канал до сервера медленный, скорость в разное время - весьма разная, но во всех опытах файл обрезается чётко на 500мб.
При зажатии скорости в файлокачалке - эти 500мб качает соответственно в несколько раз дольше, но так же упирается именно в 500мб (потом - обрыв и начинает докачку).
Взаимосвязи со временем явно нет, взаимосвязь только с размером.

Хостеру напиши. Вероятно, поставили лимит, чтобы пользователи оперативу не потребляли сверх нормы.

Попробуй сделать тестовый файл больше 500 мегабайт - zip, положи его в корень сайта и попробуй скачать в браузере, минуя скрипты сайта, то есть напрямую.

  • Author
3 часа назад, Zero108 сказал:

Хостеру напиши.

Пока ничего внятного не ответили, сказали типа поднимите post_max_size upload_max_filesize - но у меня там было 192M, а файл режется на 500M. Написал в этих опциях 900M, через phpinfo() вижу что 900M установлено. Но итог прежний. Из IPS файлы обрезаются на 500мб.

 

3 часа назад, Zero108 сказал:

Попробуй сделать тестовый файл больше 500 мегабайт - zip, положи его в корень сайта и попробуй скачать в браузере,

А так файлы более 500мб нормально скачиваются. Значит виноват либо php либо баг в IPS последних версий...

И что делать дальше?

У тебя в приложении Загрузки (Downloads) эти проблемные файлы загружены в базу данных или добавлены по прямым ссылкам? Если по ссылкам, куда ведут эти ссылки: на твой сервер или в облачное хранилище?

  • Author

Стало понятно что дело не в IPS. Через php-скрипты не отдаются файлы более 500мб.

Даже в Wordpress плагины для файлового архива, тоже отдающие файлы через php, в итоге на 500мб обрезают отдачу файла.

Весь гугл заспамлен проблемой аплоада файлов через php, но с аплоадом у меня всё нормально. В тот же IPS я спокойно заливаю файл на 800мб, он на диске виден что 800, а скачать обратно через php - режется на 500.

Какой-то лимит у хостера, ищут проблему.

  • Author
14 минут назад, Zero108 сказал:

Так вы базу данных закачиваете эти файлы?

Не в базу, всё на диске лежит.

IPS модуль Загрузки кажется вообще давно разучился закачивать файлы в базу, только на диск. Где у него такая настройка?

38 минут назад, Zero108 сказал:

Файлы до 3 ГБ скачиваются по ссылкам с диска.

А как это сделать? Вроде всё в админке облазил - не нашёл.

Опция анти-лич (Сообщество - ЗАГРУЗКИ - Настройки - Основные настройки) не влияет никак. Из каталога загрузок файлы в любом случае отдаётся php-скриптом, прямой ссылки на файл пользователю не показывается.

32 минуты назад, f2065 сказал:

А как это сделать?

UserBrave.thumb.jpg.f63b9f9672df9dc2202b3055b4418484.jpg

image.thumb.jpeg.6ff34af0b3b748abb216a80b2a753962.jpeg

У меня для скачивания по URL используются абсолютные ссылки. Не помню, можно ли использовать относительные.

Если я правильно помню, когда вы загружаете вот сюда, то ваши файлы хранятся в базе данных, а не в виде файлов файловой системы вашего сайта.

При скачивании больших файлов они обрезаются. - Техническая поддержка Invision Community - IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения – Brave.jpg

Edited by Zero108

  • Author

Не, файлы в файловой системе. Это задаётся в разделе Система - Обзор - Файлы - Настройки хранения. Там у меня всех хранений созданы конфигурации в папках файловой системы, SQL нигде не используется.

Вобщем файлы сейчас физически лежат в файловой системе (правда имена у них хэшированые). Но модуль Загрузки их отдаёт только через php (видимо для детального учёта статистики). Вопрос в том как бы заставить IPS Загрузки отдавать файлы напрямую, не прогоняя через php. Перезагружать всё и прописывать URL - это не выход, хотелось бы как-то глобально в админке. Да и хэширование имён тоже препятствует простому созданию ссылок.

У меня так было сделано одно время, на 3.х 

В server{} nginx создаем

location /uploads {
                       root /home/user/;
                       internal;
}

root указывает на корневую директорию форума. Рестартуем nginx.

в app../downloads/modules/front/downloads/view.php перед 

/* Print the file, honoring ranges */

вставляем

header("X-Accel-Redirect: /uploads/" . $file->container.'/'.$file->filename;);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $file->originalFilename);
exit;

После этого файлы будет отдавать nginx, а не движок форума. 

Edited by Desti

Desti так в чем проблема то отдавать через движок? Что мешает в данном случае? Вот городить костыли не хочется, если честно. Забыть легко потом после обновления.

  • Author

Решение проблемы - техподдержка хостера увеличила следующие параметры веб-сервера LiteSpeed

maxReqBodySize: 500M -> 1024M
maxDynRespSize: 500M -> 1024M
И тогда php нормально отдаёт файлы более 500мб...

 

3 часа назад, Zero108 сказал:

так в чем проблема то отдавать через движок? Что мешает в данном случае? Вот городить костыли не хочется, если честно. Забыть легко потом после обновления

Не хочется - не городите, какая проблема. 

8 часов назад, f2065 сказал:

Вопрос в том как бы заставить IPS Загрузки отдавать файлы напрямую, не прогоняя через php.

Это был ответ на вопрос. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.