PHP. Различия между Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM
04 февраля 2019
7023
tl;dr:
- CGI, Fast-CGI являются протоколами; CGI медленный, Fast-CGI намного быстрее
- mod_php (с подчеркиванием) и PHP-FPM - два основных способа запуска PHP
- mod_SuPHP похож на mod_php, но может изменять пользователя / группу, под которой запускается процесс.
Полная версия:
Во-первых, есть два протокола:
CGI-скрипты - это способ запуска какого-либо серверного скрипта при получении HTTP-запроса; этот протокол не имеет ничего общего с PHP.
FastCGI - «лучше, чем CGI» - известно, что CGI медленный, Fast CGI - это другой подход с гораздо более быстрыми результатами; этот протокол также не имеет ничего общего с PHP.
А вот что связано с PHP напрямую:
- mod_php запускает PHP как модуль вебсервера Apache. Запрос PHP выполняется под процессом Apache со всем, что с ним связано. Например PHP запускается с теми же правами, что и Apache и т. д.
- PHP-FPM - это PHP-реализация FastCGI; PHP-FPM работает как самостоятельный сервер FastCGI, и Apache подключается к серверу с помощью модуля Apache, обычно mod_fcgid или mod_fastcgi. Это лучше, чем запускать PHP через mod_php. В этой конфигурации права доступа и все остальное выполняется в конфигурации PHP. Apache подключается к PHP как к серверу. В этой конфигурации также возможно иметь пул PHP-серверов и иметь PHP-сервер на физически отличной машине от Apache. Это почти так же быстро, как использование модуля Apache, при этом контроля над конфигурацией PHP больше.
- SuPHP - в основном использовалось для решения некоторых проблем mod_php, связанных с разрешениями; с mod_php PHP-скрипты запускаются под пользователем / группой Apache; mod_suphp может запускать скрипты от другого пользователя.