Каков предел размера запроса post?

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

У меня есть приложение flex, которое я отправляю данные обратно на сервер 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, БД mySql.

8 ответов


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

#set max post size
php_value post_max_size 20M

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

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


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

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

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


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

max_input_vars

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

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

Ref.: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars


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

max_input_vars  2500
memory_limit    256M

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

php_value post_max_size 2KB

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


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


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

найти

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

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


одно из лучших решений для этого, вы не используете несколько или более 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-файл, который вреден для сервера, поскольку он использует больше кэш-памяти сервера, и это иногда может сбой сервера.