Режимы запуска интерпретатора PHP (SAPI)
SAPI (Server Application Programming Interface) — программный интерфейс, который предназначен для встраивания интерпретатора PHP в другие приложения и отвечает за его работу (запуск, остановка, передача скриптов на исполнение, доступ к внешним данным). В частности, SAPI позволяет интерпретатору PHP работать в качестве части web-приложения (а по сути — как часть веб-сервера), получать конкретные запросы от программы-сервера и отдавать данные.
Существует несколько основных SAPI, определяющих способы запуска и использования PHP:
В качестве модуля к веб-серверу (например, для Apache модуль mod_php
). В этом случае интерпретатор PHP выполняется в окружении процесса веб-сервера. Веб-сервер управляет количеством запущенных процессов PHP и сообщает им какие скрипты требуется исполнить.
CGI SAPI. Использование CGI подразумевает запуск нового процесса для обработки каждого запроса. Для исполнения PHP скрипта веб-сервер запускает
./php-cgi /path/to/script.php
Сам принцип такого использования подразумевает, что интерпретатор PHP исполняет только один скрипт, после чего заканчивает свою работу. Затраты на запуск процесса интерпретатора и его инициализацию очень часто сопоставимы или даже превышают затраты на исполнение PHP скрипта. Для решения этой проблемы в CGI SAPI был введён режим FastCGI. В этом режиме PHP интерпретатор запускается как независимый сервер, обрабатывающий входящие запросы на исполнение PHP скриптов по протоколу FastCGI, что позволяет ему работать с любым веб-сервером, поддерживающим этот протокол.
FPM SAPI, известный как php-fpm
— это другая реализация протокола FastCGI. Данная реализация решала ряд проблем, которые мешали использованию CGI/FastCGI SAPI. В частности, появилась возможность перезапуска пула интерпретаторов PHP без потери запросов, запуск нескольких пулов под разными пользователями, аварийный перезапуск интерпретаторов в случае проблем с ними и ещё несколько приятных дополнений. В дальнейшем был добавлен режим динамического управления числом запущенных процессов PHP (по принципу управления числом процессов в веб-сервере Apache).
В качестве скрипта командной строки (CLI SAPI), являющегося исполняемым файлом, который вызывается пользователем из командной строки; скрипт выполняется в окружении вызвавшего пользователя. В этом случае возможно использование PHP для создания клиентских GUI-приложений и решения административных задач в операционных системах UNIX, Linux, Microsoft Windows.
Начиная с версии PHP 5.4.0 в CLI SAPI появилась возможность запуска PHP как отдельного HTTP сервера. Однако этот режим предназначен исключительно для разработки, так как запускает только один процесс интерпретатора и выполняет все запросы исключительно последовательно.
Чтобы узнать версию SAPI достаточно выполнить код:
echo php_sapi_name();
- Коротко о CGI, FastCGI, PHP-FPM и mod_php
- Установка PHP как FastCGI под Apache (Windows 10)
- Vagrant. Начало работы. Часть 2 из 2
- Установка Nginx, MySQL и PHP на Ubuntu 18.04 LTS
- Установка Apache, MySQL и PHP на Ubuntu 18.04 LTS
- Apache2. Установка и настройка. Часть 2 из 2
- Apache2. Установка и настройка. Часть 1 из 2
Поиск: Apache • CGI • CLI • FPM • FastCGI • Nginx • PHP • SAPI • Web-разработка