Каков предел размера почтового запроса? - PullRequest
245 голосов
/ 02 марта 2010

Извините, если это дубликат, я думаю, что будет, но ничего не смог найти.

У меня есть гибкое приложение, которое я отправляю данные обратно на сервер php / mysql через IE. Я еще не сталкивался с какими-либо проблемами, но зная об этом заранее, я мог бы избавить меня от разочарований и работы. Существует ли ограничение размера для размещения данных через http?

В этой статье сказано: http://www.netlobo.com/ie_form_submit.html

Эта дискуссия говорит да: http://bytes.com/topic/php/answers/538226-what-maximum-limit-using-post-method

И все это говорит о том, что я могу найти в Интернете. Так что просьба ограничить количество ответов лично проверенными / проверенными номерами.

Я хочу отправить обратно строку XML, которая может быть довольно большой (скажем, до 5 МБ).

Если это имеет какое-либо значение: браузер всегда будет IE (наш продукт требует этого), отправка сообщения и httpService на flex, веб-сервер php, DB mySql.

Ответы [ 8 ]

193 голосов
/ 02 марта 2010

Это зависит от конфигурации сервера. Если вы работаете с PHP под Linux или аналогичным, вы можете управлять им, используя конфигурационный файл .htaccess, например:

#set max post size
php_value post_max_size 20M

И, да, я могу лично засвидетельствовать тот факт, что это работает:)

Если вы используете IIS, я понятия не имею, как бы вы установили это конкретное значение.

69 голосов
/ 02 марта 2010

URL-часть запроса (GET и POST) может быть ограничена как браузером, так и сервером - обычно безопасный размер составляет 2 КБ, поскольку практически нет браузеров или серверов, использующих меньший лимит.

Тело запроса (POST) обычно * ограничено сервером на основе размера байта, чтобы предотвратить тип атаки DoS (обратите внимание, что это означает, что экранирование символов может увеличить размер байта тела). Наиболее распространенная настройка сервера - 10 МБ, хотя все популярные серверы позволяют увеличивать или уменьшать ее с помощью файла настроек или панели.

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

46 голосов
/ 08 ноября 2013

Также, в файле PHP.INI есть настройка:

max_input_vars

, которая в моей версии PHP: 5.4.16 по умолчанию равна 1000.

Из руководства: "Какмногие входные переменные могут быть приняты (ограничение применяется к $ _GET, $ _POST и $ _COOKIE superglobal отдельно) "

Ссылка: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars

11 голосов
/ 10 марта 2015

Вы можете опубликовать большой объем данных, установив переменную php.ini: max_input_vars Размер этой переменной по умолчанию равен 1000, но если вы хотите отправить большой объем данных, вы должны соответственно увеличить размер. Если вы не можете установить размер из ini_set, вам нужно сделать это с помощью htaccess или внести изменения в файл php.ini напрямую.

max_input_vars  2500
memory_limit    256M
5 голосов
/ 27 июня 2013

Как отметил Дэвид, в большинстве случаев я бы использовал KB.

php_value post_max_size 2KB

Примечание: моя форма проста, всего несколько текстовых полей, а не длинный текст.

1 голос
/ 16 ноября 2016

По умолчанию максимальный размер почтового запроса составляет 8 МБ. Но вы можете изменить его в соответствии с вашими требованиями. Изменение можно сделать, открыв файл php.ini (настройка конфигурации php).

Найти

post_max_size=8M  //for me, that was on line:771

заменить 8 в соответствии с вашими требованиями.

1 голос
/ 02 марта 2010

Сервер http решает, существует ли ограничение. Продукт, над которым я работаю, позволяет администратору настроить ограничение.

0 голосов
/ 18 января 2014

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

Смотрите это:

<input type='text' name='hs1' id='hs1'>
<input type='text' name='hs2' id='hs2'>
<input type='text' name='hs3' id='hs3'>
<input type='text' name='hs4' id='hs4'>
<input type='text' name='hs5' id='hs5'>

<input type='hidden' name='hd' id='hd'>

Используя любой скрипт (JavaScript или JScript),

document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value

С этим вы обойдете проблему max_input_vars. Если вы увеличите max_input_vars в файле php.ini, это будет вредно для сервера, поскольку он использует больше кэш-памяти сервера, что иногда может привести к сбою сервера.

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