Что такое SAPI и когда вы его используете?

недавно я узнал об обработке ошибок в PHP и наткнулся на error_log() функции.

в руководстве PHP говорится обо всех типах журналов ошибок, и я понимаю все из них, за исключением типа 3, который утверждает, что сообщение об ошибке отправляется непосредственно обработчику ведения журнала SAPI. Мой вопрос в том, что такое SAPI и когда вы хотите его использовать?

4 ответов


SAPI означает "API сервера". Это механизм, который контролирует взаимодействие между "внешним миром" и движком PHP/Zend. Так что, вы всегда хотели бы использовать его. Фактически, вы не можете избежать его использования без больших усилий, так как даже CLI считается SAPI.


SAPI (интерфейс программирования приложений сервера) также известен как ISAPI в (интерфейс прикладного программирования сервера интернета) для Майкрософт,NSAPI (интерфейс прикладного программирования сервера Netscape) для Netscape.

API смысл.

для веб-разработчика вы можете думать об API, таких как REST, SOAP. Вы вызываете ссылку, вы получаете данные с сервера. Это позволяет взаимодействовать с web сервер.

SAPI отличается от REST или SOAP, SAPI-это API (контракт), используемый для сервера.

например: общий интерфейс шлюза является SAPI. Если веб-сервер поддерживает CGI, а другая исполняемая программа реализует его, веб-сервер может динамически создавать и создавать веб-страницы.

Смотрим рисунок ниже:

SAPI apache and php

mod_php реализовать интерфейс, который apache и php может понять каждый другой.

Так что же такое SAPI точно: это контракт между сервером (любым видом сервера) и программой. Просто следуйте контракту,и им не нужно знать другие детали.


с Википедия:

другими словами, SAPI на самом деле является интерфейсом прикладного программирования (API), предоставляемым веб-сервером, чтобы помочь другим разработчикам в расширении возможностей веб-сервера.

например, PHP имеет прямой модульный интерфейс SAPI для разных веб-серверов; в случае PHP 5 и Apache 2.0 В Windows он предоставляется в виде DLL-файла php5apache2.dll, который является модулем, который, среди прочего функции, предоставляет интерфейс между PHP и веб-сервером, реализованный в форме, которую понимает сервер. Эта форма называется САПИ.

существуют различные виды SAPIs для различных расширений веб-серверов. Например, еще два Сапи для языка PHP-это общий интерфейс шлюза (CGI) и интерфейс командной строки (CLI).


для PHP доступны SAPIs: Apache2 (mod_php), FPM, CGI, FastCGI и CLI.

возможно, если API работает на сервере, он может называться SAPI.

позвольте мне напомнить, что FPM (FastCGI Process Manager) очень близок к реализации PHP FastCGI с некоторыми дополнительными функциями (в основном), полезными для тяжелонагруженных сайтов.

сегодня с точки зрения скорости и эффективности FPM был бы самым развитым SAPI. Apache или Nginx будут выполнять лучшее сравнение другими упомянутыми видами SAPI.