Проблема с загрузкой файла - PullRequest
0 голосов
/ 07 мая 2010

Я работаю над системой управления билетами на основе PHP.При создании заявки можно загрузить вложение.

Я хочу установить ограничение (скажем, 10 МБ) для каждой загрузки файла.
Для реализации этого я планирую следующее -
1. В php.ini set

post_max_size = 10M 

2.В скрипте PHP, который получает POST-
, поскольку файл больше, чем post_max_size, $ _FILES [] будет пустым.Но я все еще могу проверить заголовок content-length и отказаться от загрузки, если размер больше 10M.

Во время тестирования я попытался загрузить файл размером 1 ГБ и проанализировал трафик http, и это то, что я нашел.

-> все данные объемом 1 ГБ сначала загружаются на сервер временно и отбрасываются после завершения http-запроса.Хотя я не мог точно выяснить, где файл был сохранен (так как его там не было во временном каталоге на сервере), но мой анализатор http-трафика показал, что браузер отправил данные 1 ГБ на сервер.

-> выполнение PHP-скрипта началось только после завершения http-запроса (т.е. после загрузки всего 1 ГБ)

Теперь у меня есть 2 проблемы:
a) Люди могут использовать пропускную способность моего серверапытаясь загрузить большой файл, который мне все равно придется выбросить.
b) Еще хуже, если кто-то начнет загружать большой файл (скажем, 100 ГБ), сначала на сервер временно загружаются все 100 ГБ данных, что означаетв течение этого периода он будет занимать столько памяти на моем сервере.

Какое общее решение для этого.Я что-то здесь упускаю?

1 Ответ

3 голосов
/ 07 мая 2010

Пробовали ли вы использовать директиву Apache LimitRequestBody ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...