POST-запросы из jQuery в PHP зависли, если POST-данные превышают несколько сотен символов

У меня есть простой ajax-запрос, инициируемый jQuery в PHP-скрипт:

$.ajax({
  url:"script.php",
  data: data,
  type: "POST"
  // error & success handlers here
});

Если длина данных (может быть JSON, может быть двоичным файлом) превышает несколько сотен символов, запрос POST никогда не завершается, он просто зависает там. Нет ошибок в журнале Apache или консоли JS, нет других указаний на то, что может происходить.

Работа с php.ini post_max_data и другими настройками не дала никаких результатов, и все настройки, о которых я мог подумать, установлены на очень допустимые значения.

Я использую сервер Ubuntu 14.04 с Apache 2.4 и PHP 5.5.9.

Что мне не хватает?

1 ответ

Вы проверили свою конфигурацию PHP относительно длины вашего запроса? Есть несколько параметров, управляющих разрешенным размером запроса, я включу самые важные из них (прямо из php.ini со ссылками).

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 10M

; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 1000

Это может потребоваться увеличить, если в ваших пост-переменных есть сильно вложенная структура данных (довольно маловероятно)

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
max_input_nesting_level = 64

Если это не работает, я просто нашел хорошее резюме о том, как увеличить ваши лимиты и тайм-ауты в apache / php: http://www.devside.net/wamp-server/apache-and-php-limits-and-timeouts

Надеюсь это поможет,

С уважением и счастливого кодирования!

Другие вопросы по тегам