Как загрузить большие файлы выше 500 МБ в PHP - программирование
Подтвердить что ты не робот

Как загрузить большие файлы выше 500 МБ в PHP

Я сделал страницу загрузки на PHP, но я не знаю, почему страница не будет загружать документы размером более 500 МБ. Это мой первый раз, когда я пытаюсь загрузить что-то такое большое, я изменил все конфигурации в PHP.INI( post_max_size = 700M, upload_max_filesize = 600M и max_execution_time = 300). Коды для загрузки ниже

if(isset($_FILES['upload']) && !empty($_FILES['upload']['name'])){
 move_uploaded_file($_FILES['upload']['tmp_name'], $this->filePath.$this->fileName);
}

Мне нужна помощь, интересно, есть ли что-то, что я не делаю правильно.

4b9b3361

Ответ 1

Как вы думаете, решит ли проблема увеличение размера ограничения загрузки? что, если вы загружаете 2GB файл, что происходит? Принимаете ли вы во внимание использование памяти такого script?

Вместо этого вам нужно загрузить chunked, см. здесь: Обработка загруженных загрузок plupload на стороне сервера и здесь: Загрузка файлов; Как использовать "chunking" ?

Ответ 2

По конфигурации PHP позволяет загружать файлы только определенного размера. В Интернете есть много статей, в которых объясняется, как изменить этот предел. Ниже приведены некоторые из них:

Например, вы можете отредактировать файл php.ini и установить:

memory_limit = 32M
upload_max_filesize = 24M
post_max_size = 32M

Затем вам необходимо перезапустить apache.

Примечание:
Как говорится, загрузка больших файлов не очень надежна. Ошибки могут возникнуть. Вы можете разделить файлы и включить некоторые дополнительные данные для исправления ошибок. Один из способов сделать это - использовать файлы восстановления файлов. Затем вы можете проверить файлы после загрузки с помощью утилиты par командной строки в unix-подобных системах.

Ответ 3

Я предполагаю, что вы имеете в виду, что вы передаете файлы через HTTP. Хотя это не так плохо, как FTP, это не очень хорошая идея, если вы можете найти другое решение проблемы. HTTP (и, следовательно, программные компоненты) оптимизированы для переноса относительно небольших файлов в Интернете.

В то время как протокол поддерживает запросы сервера на сервер, он не позволяет выполнить обратную операцию. Даже если программное обеспечение на обоих концах не затронуло громкость, тем больше данных вы проталкиваете  тем больше интервал, в течение которого вы можете потерять соединение. Но самая большая проблема - это оговорка в последнем предложении.