Назад | Перейти на главную страницу

Запросы 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.

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

Вы проверили конфигурацию 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

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

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