Предел PHP в переменных POST

Я пытаюсь отправить массив в PHP-скрипт методом POST. Сначала я сериализую () , а затем использовал base64_encode () . После его получения, скрипт затем base64_decode () он затем unserialize () . Я знаю, что использование функций base64_encode увеличивает размер данных на 33%, поэтому я обеспокоен тем, что переменные POST могут быть перегружены и, таким образом, дадут мне ошибку. Есть ли ограничение на строку, которая может быть POST'ed? Или лучше, есть ли другой способ, который я могу использовать, кроме base64_encode, чтобы правильно передать массив другому скрипту? Кстати, без использования функций base64_ при сериализации я получаю сообщение «Ошибка: .. смещение».

Это будет зависеть от содержимого массива. Если это в основном текст, вы можете сжать / распаковать, используя gzcompress / gzuncompress, полученный сериализованный объект:

$encoded = base64_encode(gzcompress(serialize($original))); $original = unserialize(gzuncompress(base64_decode($_POST['encoded']))); 

gzencode / gzdecode, вероятно, даст лучшее сжатие для данных большего размера. Если ваш арай содержит двоичные данные или, что еще хуже, сжатые данные, то этот метод, вероятно, не принесет ничего хорошего.

В дополнение к уже упомянутой конфигурации PHP ваш веб-сервер также может устанавливать ограничения размера POST, например, директиву LimitRequestBody в apache: http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody

Значение php.ini ir отвечает за максимальный размер POST:

 post_max_size = 10M 

Не нужно беспокоиться о размере, но я бы подумал об использовании сеансов для этой цели

1) Максимальный объем данных, которые вы можете использовать POST, – это директива post_max_size в php.ini. См .: http://www.php.net/manual/en/ini.core.php#ini.post-max-size

2) Возможно, вы можете сделать это через $ _SESSION?