У меня есть простой запрос 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
Надеюсь это поможет,
С уважением и удачного кодирования!