Желательно ли загружать очень большие файлы (например, 500 МБ) через php? - PullRequest
4 голосов
/ 07 сентября 2010

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

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

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 07 сентября 2010

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

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

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

1 голос
/ 07 сентября 2010

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

1 голос
/ 07 сентября 2010

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

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

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

...