f2065 Опубликовано 28 марта Поделиться Опубликовано 28 марта В приложении Загрузки выложены большие файлы, размером до 900мб. Раньше всё работало нормально, люди точно их скачивали. А сейчас стали жаловаться что файлы битые. Я проверил - файлы обрезаются на 500 МБ (524 935 361 байт). Движок был 4.7.15, обновление до 4.7.16 не помогло. В настройках вроде бы нигде нет лимита (да и было бы предупреждение, а не так что половина файла скачалась и обрыв). В логах в админке никаких событий в это время не было. В админке изучил отчёт phpinfo - нигде никаких лимитов в районе 500 МБ там нет. Выключил в настройках антилич-защиту - не помогло. Через Download Master в многопоточном режиме файл качается нормально. Урезал настройки Download Master для однопоточного скачивания - через 500 МБ - Socket disconnected. Куда копать? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 28 марта Поделиться Опубликовано 28 марта Что там с таймаутами у веб-сервера? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 28 марта Автор Поделиться Опубликовано 28 марта 37 минут назад, Zero108 сказал: Что там с таймаутами у веб-сервера? Где их смотреть? Виртуальный хостинг, cPanel, LiteSpeed. Но врядли в таймаутах дело, канал до сервера медленный, скорость в разное время - весьма разная, но во всех опытах файл обрезается чётко на 500мб. При зажатии скорости в файлокачалке - эти 500мб качает соответственно в несколько раз дольше, но так же упирается именно в 500мб (потом - обрыв и начинает докачку). Взаимосвязи со временем явно нет, взаимосвязь только с размером. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 28 марта Поделиться Опубликовано 28 марта Хостеру напиши. Вероятно, поставили лимит, чтобы пользователи оперативу не потребляли сверх нормы. Попробуй сделать тестовый файл больше 500 мегабайт - zip, положи его в корень сайта и попробуй скачать в браузере, минуя скрипты сайта, то есть напрямую. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 28 марта Автор Поделиться Опубликовано 28 марта 3 часа назад, Zero108 сказал: Хостеру напиши. Пока ничего внятного не ответили, сказали типа поднимите post_max_size upload_max_filesize - но у меня там было 192M, а файл режется на 500M. Написал в этих опциях 900M, через phpinfo() вижу что 900M установлено. Но итог прежний. Из IPS файлы обрезаются на 500мб. 3 часа назад, Zero108 сказал: Попробуй сделать тестовый файл больше 500 мегабайт - zip, положи его в корень сайта и попробуй скачать в браузере, А так файлы более 500мб нормально скачиваются. Значит виноват либо php либо баг в IPS последних версий... И что делать дальше? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 28 марта Поделиться Опубликовано 28 марта Закачал в 4.7.16 файл на 800 мегов, скачался без проблем. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта У тебя в приложении Загрузки (Downloads) эти проблемные файлы загружены в базу данных или добавлены по прямым ссылкам? Если по ссылкам, куда ведут эти ссылки: на твой сервер или в облачное хранилище? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 29 марта Автор Поделиться Опубликовано 29 марта Стало понятно что дело не в IPS. Через php-скрипты не отдаются файлы более 500мб. Даже в Wordpress плагины для файлового архива, тоже отдающие файлы через php, в итоге на 500мб обрезают отдачу файла. Весь гугл заспамлен проблемой аплоада файлов через php, но с аплоадом у меня всё нормально. В тот же IPS я спокойно заливаю файл на 800мб, он на диске виден что 800, а скачать обратно через php - режется на 500. Какой-то лимит у хостера, ищут проблему. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта Так вы базу данных закачиваете эти файлы? Я больше 100 мегабайт в базу данных не закачиваю. Файлы до 3 ГБ скачиваются по ссылкам с диска. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 29 марта Автор Поделиться Опубликовано 29 марта 14 минут назад, Zero108 сказал: Так вы базу данных закачиваете эти файлы? Не в базу, всё на диске лежит. IPS модуль Загрузки кажется вообще давно разучился закачивать файлы в базу, только на диск. Где у него такая настройка? 38 минут назад, Zero108 сказал: Файлы до 3 ГБ скачиваются по ссылкам с диска. А как это сделать? Вроде всё в админке облазил - не нашёл. Опция анти-лич (Сообщество - ЗАГРУЗКИ - Настройки - Основные настройки) не влияет никак. Из каталога загрузок файлы в любом случае отдаётся php-скриптом, прямой ссылки на файл пользователю не показывается. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта 32 минуты назад, f2065 сказал: А как это сделать? У меня для скачивания по URL используются абсолютные ссылки. Не помню, можно ли использовать относительные. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта (изменено) Если я правильно помню, когда вы загружаете вот сюда, то ваши файлы хранятся в базе данных, а не в виде файлов файловой системы вашего сайта. Изменено 29 марта пользователем Zero108 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 29 марта Автор Поделиться Опубликовано 29 марта Не, файлы в файловой системе. Это задаётся в разделе Система - Обзор - Файлы - Настройки хранения. Там у меня всех хранений созданы конфигурации в папках файловой системы, SQL нигде не используется. Вобщем файлы сейчас физически лежат в файловой системе (правда имена у них хэшированые). Но модуль Загрузки их отдаёт только через php (видимо для детального учёта статистики). Вопрос в том как бы заставить IPS Загрузки отдавать файлы напрямую, не прогоняя через php. Перезагружать всё и прописывать URL - это не выход, хотелось бы как-то глобально в админке. Да и хэширование имён тоже препятствует простому созданию ссылок. Zero108 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 29 марта Поделиться Опубликовано 29 марта Поменять систему загрузки для downloads. Если у вас nginx, то отдавать с заголовком X-Accel-Redirect. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 29 марта Поделиться Опубликовано 29 марта (изменено) У меня так было сделано одно время, на 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, а не движок форума. Изменено 29 марта пользователем Desti Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 29 марта Поделиться Опубликовано 29 марта Если хочется отдавать контент по типу, то заменить вторую строку на header('Content-Type: '.\IPS\File::getMimeType( $file->originalFilename )); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта Desti так в чем проблема то отдавать через движок? Что мешает в данном случае? Вот городить костыли не хочется, если честно. Забыть легко потом после обновления. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
f2065 Опубликовано 29 марта Автор Поделиться Опубликовано 29 марта Решение проблемы - техподдержка хостера увеличила следующие параметры веб-сервера LiteSpeed maxReqBodySize: 500M -> 1024M maxDynRespSize: 500M -> 1024M И тогда php нормально отдаёт файлы более 500мб... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 29 марта Поделиться Опубликовано 29 марта 3 часа назад, Zero108 сказал: так в чем проблема то отдавать через движок? Что мешает в данном случае? Вот городить костыли не хочется, если честно. Забыть легко потом после обновления Не хочется - не городите, какая проблема. 8 часов назад, f2065 сказал: Вопрос в том как бы заставить IPS Загрузки отдавать файлы напрямую, не прогоняя через php. Это был ответ на вопрос. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 29 марта Поделиться Опубликовано 29 марта 1 час назад, f2065 сказал: параметры веб-сервера LiteSpeed Этим софтом мало кто пользуется, но за инфу спасибо. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Zero108 Опубликовано 29 марта Поделиться Опубликовано 29 марта (изменено) 1 час назад, f2065 сказал: maxReqBodySize Ну, собственно, вот аналогичный случай. Издержки дешевых хостингов. https://wordpress.org/support/topic/large-digital-file-downloads-ending-early-at-500mb/ Изменено 29 марта пользователем Zero108 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.