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

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

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

Однако ФПМ этого не делает. Он выведет все данные только после завершения сценария. (Это не то, чего я хочу...)

Как настроить 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/

Другие вопросы по тегам