Я сделал страницу загрузки на 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); }
Мне нужна помощь, интересно, есть ли что-то, что я не делаю правильно.
Как вы думаете, решит ли проблема увеличение размера ограничения загрузки? что, если вы загружаете 2GB-файл, что происходит? Учитываете ли вы использование памяти такого скрипта?
Вместо этого вам нужно загрузить chunked, см. Здесь: Обработка загружаемых plupload на серверной стороне и здесь: Загрузка файлов; Как использовать «chunking»?
По конфигурации PHP позволяет загружать файлы только определенного размера. В Интернете есть много статей, в которых объясняется, как изменить этот предел. Ниже приведены некоторые из них:
Например, вы можете отредактировать файл php.ini
и установить:
memory_limit = 32M upload_max_filesize = 24M post_max_size = 32M
Затем вам необходимо перезапустить apache.
Заметка:
Это говорит о том, что загрузка таких больших файлов не очень надежна. Ошибки могут возникнуть. Вы можете разделить файлы и включить некоторые дополнительные данные для исправления ошибок. Один из способов сделать это – использовать файлы восстановления . Затем вы можете проверять файлы после загрузки с помощью утилиты командной строки в unix-подобных системах.
Я предполагаю, что вы имеете в виду, что вы передаете файлы через HTTP. Хотя это не так плохо, как FTP, это не очень хорошая идея, если вы можете найти другое решение проблемы. HTTP (и, следовательно, программные компоненты) оптимизированы для переноса относительно небольших файлов по всему Интернету.
Хотя протокол поддерживает запросы сервера на клиентский диапазон, он не позволяет выполнять обратную операцию. Даже если программное обеспечение с обеих сторон не подвержено влиянию объема, тем больше данных вы нажимаете на больший интервал, в течение которого вы можете потерять соединение. Но самая большая проблема – это оговорка в последнем предложении.