Всем привет! Изучая Nginx дошел до того, что есть SAPI, и что их несколько видов и бла,бла,бла. Вопрос: у нас есть сервер(демон, который ждёт, когда же к нему придет запрос) и есть механизм обработки (запрос/сервер -> пхп интерпретатор -> ответ/сервер)
Вопрос возник в том свете, что Апач в моих глазаг, это:
Тогда как CGI/FastCGI/FPM ==> то же самое, только программа, которая на 80 порту другая, и php интерпретатор установлен как самостоятельное приложение, а не подпрограмма
Правильно ли, что SAPI, - это механизм, который определяет, как и куда сервер будет стучатся для обработки запроса, а так же куда и как вернуть эти данные обратно ?
Вопрос 2: как система понимает, что я запрос пришел через cli или mod_apache
Правильно ли, что SAPI, - это механизм, который определяет, как и куда сервер будет стучатся для обработки запроса, а так же куда и как вернуть эти данные обратно ?
Частично, если на пальцах то так:
[Клиент] <---> [WEB-Server] <----- SAPI ------> ([ZEND] <---> [PHP])
Тогда как ваши CGI/FastCGI/FPM как раз и являются SAPI.
Наглядно можно так:
[Apache] <----- CGI------> [PHP]
Вопрос 2: как система понимает, что я запрос пришел через cli или mod_apache
Обычно вы работаете только с одним SAPI.
Вы немного запутались. Что значит система? Нет никакой системы.
В общем плане: апачу надо обработать запрос, у него есть набор инструментов (SAPI), которыми он этот запрос может выполнить. Обычно вы берете один инструмент, который выгоден для вашей задачи, и всегда с ним работаете. Вы берете к примеру CGI, и говорите ZEND-y, вот мне нужен результат работы конкретного скрипта (апач уже знает какой нужен), верни мне результат, по стандарту CGI. Тогда ZEND говорит, а есть ли у меня информация, что такое стандарт CGI, смотрит в свой кармашек и видит, что есть (ибо все что вы назвали поддерживается в php из коробки и даже больше). Раз есть, то отправляем на работу интерпретатору php, он дает результат и zend по стандарту отправляет обратно.
В PHP проверить SAPI можно так: php_sapi_name().
Сборка персонального компьютера от Artline: умный выбор для современных пользователей