Назад | Перейти на главную страницу

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

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

Используя 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 в другом домене безопасности на вашем веб-сервере

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

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

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