Веб-серверы могут обрабатывать php-скрипты в разных режимах. Если выбрать подходящий вариант взаимодействия PHP и веб-сервера на сайте, например, PHP как CGI или Apache-модуль, это положительно отразится на его производительности.
В этой статье мы рассмотрим основные режимы работы PHP.
PHP как модуль Apache (mod_php)
Модуль для веб-сервера Apache, который позволяет ему обрабатывать все запросы PHP, не используя сторонние модули.
Преимущества:
- Высокая производительность;
- Можно вводить переменные PHP в .htaccess.
Недостатки:
- отдельные пользователи на сервере с mod_php не могут вносить изменения, если у них нет прав доступа на все процессы, с которыми он работает. Иными словами, права веб-сервера должны выдаваться всем пользователям на сервере;
- Низкий уровень безопасности, так как нельзя определить пользователя, который запустил конкретный процесс (все процессы выполняются анонимно под пользователем apache);
- Ошибки в скриптах могут парализовать работу всего сервера;
- Веб-серверы с mod_php медленно обрабатывают статические данные.
PHP в режиме CGI и FastCGI
PHP CGI — один из первых сценариев обработки php-скриптов сервером с помощью модуля mod_cgi. Сейчас он используется редко и считается устаревшим.
В этом режиме каждый php-запрос выполняется отдельным процессом. Из-за этого производительность сайта снижается, и на обработку скриптов требуется больше времени.
Развитием технологии CGI (Common Gateway Interface) стал интерфейс FastCGI.
При создании сценария FastCGI учли медленную скорость обработки скриптов в CGI, поэтому в этом режиме используется циклическая обработка нескольких запросов одним процессом. FastCGI — это экономия оперативной памяти за счет сокращения количества запущенных процессов.
Преимущества:
- Пользователь обладает правами на выполнение всех скриптов на своем www-домене;
- Безопасность (каждый запрос выполняется под отдельным пользователем, запуск небезопасного php-скрипта не повлияет на файлы других пользователей, которые находятся на одном с ним сервере);
- Каждый пользователь на сервере может выбрать персональную версию PHP;
- Отсутствие сбоев сервера при наличии ошибок в скриптах;
- Обработка правил конфигурационного файла .htaccess, который поддерживается популярными CMS (Wordpress, Joomla, 1C-Битрикс и пр.).
Недостатки:
- Чуть меньшая производительность по сравнению с модулем Apache;
- Медленная обработка статических данных без связки с веб-сервером Nginx.
PHP в режиме FPM
FPM (FastCGI Process Manager) — альтернативная реализация PHP FastCGI. PHP FPM — это единственный модуль, который подходит для чистого веб-сервера Nginx.
Как работает PHP FPM:
- Быстрая обработка статических данных;
- Отсутствует необходимость в веб-сервере Apache;
- Меньшее потребление оперативной памяти.
Недостатки:
- Отсутствует поддержка конфигурационного файла .htaccess. Это требует самостоятельной настройки аналогичных правил на стороне веб-сервера Nginx.
О выборе режима PHP
Выбор режима PHP зависит от требований ваших сайтов и доступных ресурсов сервера. В большинстве случаев мы рекомендуем использовать клиентам режим FastCGI, так как он подходит для корректной работы большинства CMS и требует меньше действий со стороны пользователя.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊