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