Столкнулся ли кто-нибудь с проблемами при загрузке больших файлов через S3 API на Backblaze B2 с использованием Laravel на хостинге Timeweb? Загрузка иногда прерывается.

У меня возникли проблемы с загрузкой больших файлов (более 100 МБ) на Backblaze через S3-совместимый интерфейс. Мой сайт находится на Timeweb и использует фреймворк Laravel, а также скрипт MTDb (Ultimate Movie/TV Database). Я уже настроил подключение к Backblaze для хранения файлов через S3 API. 

Существует два подхода для загрузки: 

1. Прямая загрузка через API (без использования сервера): в этом случае файл не загружается полностью, и в хранилище создаётся пустой файл с нулевым размером.
2. Загрузка через сервер: файл загружается на сервер полностью, но во время передачи на Backblaze загрузка останавливается при достижении 200-250 МБ.

При загрузке файлов меньшего размера проблем не возникает — они загружаются без сбоев. Я подозреваю, что это может быть связано с серверными ограничениями или особенностями работы Backblaze с S3 API. 

Буду признателен за помощь в решении этой проблемы.
  • 13 октября 2024 г. 11:22
Ответы на вопрос 2
Ситуация с загрузкой больших файлов на Backblaze B2 через S3 API может быть вызвана несколькими факторами. Вот несколько шагов, которые могут помочь решить проблему, с которой вы столкнулись:

1. **Проверка лимитов сервера**: Убедитесь, что на вашем хостинге Timeweb нет ограничений по времени выполнения скриптов или объему выделяемой памяти (memory_limit). Вы можете настроить лимиты в файле php.ini или в файле .htaccess. Увеличьте следующие параметры:

   ```ini
   max_execution_time = 300
   memory_limit = 512M
   ```

2. **Используйте многосекционную загрузку (Multipart Upload)**: При загрузке больших файлов рекомендуется использовать многосекционную загрузку. Эта функция делит файл на несколько частей и загружает их параллельно, что значительно снижает вероятность прерывания загрузки. Laravel вместе с пакетом `flysystem-s3` поддерживает это. Вы можете воспользоваться методами `put` или `upload` для работы с большими файлами, которые имеют встроенную поддержку для многосекционных загрузок.

3. **Настройки Backblaze B2**: Убедитесь, что ваши настройки API на Backblaze корректны. Возможно, стоит проверить на сайте Backblaze, не установлены ли у вас ограничения по времени для неактивных запросов.

4. **Логи и отладка**: Включите логирование в Laravel, чтобы увидеть, на каком этапе загрузка прерывается. Логи могут помочь выявить конкретные ошибки или исключения, которые возникают во время загрузки файла.

5. **Проверка сети**: Иногда проблемы со стабильностью Интернет-соединения могут приводить к прерыванию загрузки. Убедитесь, что у вас стабильное интернет-соединение.

6. **Тестирование на другом сервере**: Если у вас есть возможность, попробуйте выполнить загрузку с другого хостинга или локального окружения. Это поможет понять, связана ли проблема с Timeweb или сама стратегия загрузки.

7. **Обновление пакетов**: Убедитесь, что вы используете актуальные версии всех зависимостей в вашем проекте Laravel, включая `flysystem`, `flysystem-s3` и другие.

Если после выполнения всех этих шагов проблема остается, то возможно стоит обратиться в техническую поддержку Timeweb или Backblaze с описанием вашей проблемы.
-Название скрипта и версия: 
MTDb (Ultimate Movie/TV Database), версия 4.05
-Маленькие файлы (до 100 МБ) загружаются без проблем, воспроизводятся корректно.
-Прямая загрузка через API создаёт пустые файлы, а загрузка через сервер прерывается после 200-250 МБ.
Похожие вопросы