Как включить потоковую передачу (flush/ob_flush) в CentOS 8 с помощью PHP-FPM?

Как включить потоковую передачу (flush/ob_flush) в CentOS 8 с помощью PHP-FPM?

У меня новая установка CentOS 8 Stream с Apache и настройкой PHP-FPM, использующей все настройки по умолчанию (по умолчанию установлено PHP 7.2.24 FPM/FastCGI).

Мое приложение используетСобытия отправленные серверомс использованием объекта JavaScripts EventSource. Чтобы это работало, мне нужна настройка Apache/FPM, чтобы иметь возможность отправлять данные клиенту, когда они доступны (или, по крайней мере, когда flushвыполняется вызов PHP).

Однако FPM этого не делает. Он выведет все данные только после завершения скрипта. (Что мне не нужно...)

Как настроить PHP-FPM на Centos8, чтобы он мог сбрасывать данные во время обработки скрипта?

Я попробовал добавить Proxyдирективу в /etc/httpd/conf.d/php.conf:

<Proxy "fcgi://localhost" enablereuse=on flushpackets=on max=10>
</Proxy>

сразу после </FilesMatch>, но это, похоже, не сработало.

решение1

Это не ответ на вопрос, а (временный) обходной путь: отключите PHP-FPM и вернитесь к mod_php.

В CentOS 8 это довольно просто, /etc/httpd/conf.modules.d/00-mpm.confраскомментируйте эту строку:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

и закомментируйте строку для mpm_event.

Затем добавьте это к httpd.conf:

<IfModule prefork.c>
        StartServers              5
        MinSpareServers           5
        MaxSpareServers           10
        MaxRequestWorkers         150
        MaxConnectionsPerChild    0
</IfModule>

Источник:https://www.linode.com/docs/guides/how-to-install-apache-web-server-centos-8/

Связанный контент