PHP: Каковы преимущества FastCGI перед mod_php?

30

Недавно мне предложили использовать FastCGI с PHP. Теперь я зашел на страницу FastCGI и прочитал ее, но я не совсем понимаю, в чем преимущества.

Клетус
источник

Ответы:

37

Используя mod_php, каждый рабочий Apache загружает весь интерпретатор PHP. Поскольку для каждого входящего запроса Apache требуется один рабочий процесс, вы можете быстро получить сотни рабочих Apache, каждый с загруженным собственным интерпретатором PHP, который потребляет огромные объемы памяти.

(Обратите внимание, что это не совсем так, Apache worker_mpmпозволяет обслуживать много запросов с помощью однопоточного рабочего Apache. Однако даже в 2009 году это не рекомендуемый способ развертывания PHP из-за подозрений о проблемах с многопоточностью в расширениях PHP.)

Использование PHP в режиме fast_cgi (используя что-то вроде spawn-fcgi из пакета lighttpd) имеет следующие преимущества

  • настроить количество работников PHP отдельно от количества входящих соединений
  • позволяют размещать работников PHP на другом сервере или масштабировать их на нескольких серверах, не меняя веб-уровень
  • дает вам гибкость в выборе другого веб-сервера, такого как nginx или lighttpd
  • позволяют запускать ваше PHP-приложение в другом домене безопасности на вашем веб-сервере
Дейв Чейни
источник
5

FastCGI означает, что биты php не выполняются в том же процессе, что и биты apache, в отличие от mod_php. Такое разделение может иметь некоторые определенные преимущества, когда речь идет о перезапуске сервера или работе с запущенными приложениями - в случае mod_php это означает, что это «сбежавший» процесс apache, но в fastcgi это просто процесс, с которым обращается apache, поэтому весь сервер не должен быть снят.

pjz
источник
4

Еще одно преимущество, которое еще не упомянуто, заключается в том, что с помощью mod_fcgid(которая является более новой реализацией для использования FastCGI на Apache) и suexec вы можете реализовать настройки, когда разные vhosts используют разных пользователей Linux для выполнения, что может быть реальным преимуществом безопасности в сценарии общего хостинга ,

С mod_php все vhosts совместно используют одного и того же пользователя, который является пользователем Apache. Это может привести к проблемам безопасности.

Мартин С.
источник
Это зависит от MPM, используемого в этой конкретной настройке Apache httpd. Например, с MPM-itk ( mpm-itk.sesse.net ) можно использовать mod_php и запускать сценарии (или лучше: процессы httpd) в контексте другого пользователя.
Йоси