Как работает взаимосвязь Nginx, php-fpm и php.ini?

Здравствуйте. Имеется сервер Nginx + php-fpm.
В php.ini указаны следующие лимиты:
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 30
max_input_time = 60
memory_limit = -1

В конфиге nginx -
client_max_body_size 1G;
client_header_timeout 1m;
client_body_timeout 1m;
send_timeout 1m;

До изменения memory_limit, скрипт постоянно отваливался, не давая загрузить файл большого размера, даже когда лимит на использование памяти стоял 500мб, файл 40мб не давал грузить.
Я понимаю, что php-fpm использует php.ini. Используется для загрузки XMLHttpRequest.
В реальности же, я могу грузить файлы до 1гб, тратя на это 20 минут. Phpmyadmin, в свою очередь, показывает лимит 100мб для импорта базы. Получается, параметр post_max_size не работает или работает выборочно? Как это происходит вся эта взаимосвязь? Спасибо.
  • Вопрос задан
  • 1078 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Используется для загрузки XMLHttpRequest.


XmlHTTPRequest это часть API брауера, PHP ничего о нем не знает и не отличает от остальных HTTP запросов (заголовок который по дефолту ставится можно убрать). То есть уберите в своем представлении разницу между ajax и обычными запросами.

Как это происходит вся эта взаимосвязь?


nginx проксирует HTTP запрос на php-fpm. Вот и все. Он с ним больше ничего не делает и настройки ограничивающие что можно орабатывать у него свои.

То есть мы грузим файл в 1 гиг, тело запроса буферизуется (по умолчанию, можно отключить директивой fastcgi_request_buffering но тогда свои ограничения, хотя думаю вам оно не особо важно) и потом прокидывается в пых, где тот смотрим что тело запроса слишком большое (больше сотни мегабайт) и грустит.
Ответ написан
@nikolayvaganov
закиньте на сервер <?php phpinfo(); ?> и посмотрите, какие конфиги пхп подгружаются.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы