Рекомендуется ли загружать очень большие файлы (например, 500 мб) через php?


Я создал простой веб-интерфейс, позволяющий различным пользователям загружать файлы. Я установил ограничение на загрузку в 100 мб, но теперь выясняется, что клиент иногда хочет загружать файлы размером 500 мб+.

Я знаю, что нужно изменить конфигурацию php, чтобы изменить лимит загрузки, но мне было интересно, есть ли какие-либо серьезные недостатки в загрузке файлов такого размера через php?

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

Спасибо

Author: DonutReply, 2010-09-07

3 answers

Во-первых, FTP никогда не является предпочтительным. Ни к чему.

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

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

 4
Author: symcbean, 2010-09-07 12:22:21

Независимо от используемой вами серверной технологии (PHP или что-то еще) никогда не рекомендуется запускать этот большой файл за один проход в синхронном режиме.

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

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

 1
Author: , 2010-09-07 12:25:21

PHP будет обрабатывать столько файлов и такого размера, сколько вы ему позволите. Но учтите, что в принципе невозможно возобновить прерванную загрузку в PHP, так как скрипты не запускаются до тех пор, пока загрузка не будет завершена. Чем больше размер файла, тем больше вероятность сбоя в сети, который приведет к остановке загрузки и потере значительной части времени и пропускной способности. Кроме того, без дополнительной работы с APC или использования чего-то вроде uploadify нет отчета о ходе работы, и пользователи остаются в браузере не проявляя никаких видимых признаков реальной работы, кроме пыхтящего пульсатора.

 1
Author: Marc B, 2010-09-07 14:01:05