什么是SAPI以及何时使用它?

时间:2012-03-30 17:50:56

标签: php sapi

我最近在PHP中学习了错误处理,并遇到了error_log() function

在PHP手册中,它讨论了所有错误日志类型,除了类型3之外我理解所有错误日志类型,其中声明错误消息直接发送到SAPI日志记录处理程序。我的问题是SAPI究竟是什么以及您何时想要使用它?

4 个答案:

答案 0 :(得分:46)

SAPI代表“服务器API”。它是控制“外部世界”和PHP / Zend引擎之间交互的机制。所以,你总是想要使用它。事实上,你不能不费力地使用它,因为即使CLI被认为是SAPI。

答案 1 :(得分:27)

SAPI (服务器应用程序编程接口)也称为Microsoft的 ISAPI (Internet服务器应用程序编程接口), NSAPI (Netscape Server Application) Netscape的编程接口。

API 含义。

对于Web开发人员,您可以考虑使用REST,SOAP等API。您调用从服务器获取数据的链接。它允许您与Web服务器进行交互。

SAPI与REST或SOAP不同,SAPI是用于服务器的API(合同)。

例如:通用网关接口是SAPI。如果Web服务器支持CGI和另一个可执行程序实现它,那么Web服务器可以交互并动态生成Web页面。

看下面的图片:

SAPI apache and php

mod_php实现了一个apache和php可以互相理解的接口。

那么什么是SAPI正好:它是Server(任何类型的服务器)和程序之间的契约。只需遵守合同,他们就不需要知道其他方面的细节。

答案 2 :(得分:15)

来自Wikipedia

  

换句话说,SAPI实际上是Web服务器提供的应用程序编程接口(API),以帮助其他开发人员扩展Web服务器功能。

     

作为一个例子,PHP有一个名为SAPI的直接模块接口,用于不同的Web服务器;在Windows 5上的PHP 5和Apache 2.0的情况下,它以一个名为php5apache2.dll的DLL文件的形式提供,该文件是一个模块,除了其他功能之外,还提供PHP和Web服务器之间的接口,以一种形式实现服务器理解。这种形式就是所谓的SAPI。

     

各种Web服务器扩展有不同种类的SAPI。例如,另外两个用于PHP语言的SAPI是通用网关接口(CGI)和命令行接口(CLI)。

答案 3 :(得分:1)

对于PHP,可用的SAPI是:Apache2(mod_php),FPM,CGI,FastCGI和CLI。

可以争论的是,如果API在服务器上运行,则可以称为SAPI。

让我提醒一下,FPM(FastCGI流程管理器)与PHP FastCGI的实现非常接近,它具有一些(特别是)对重载站点有用的附加功能。

今天,从速度和效率的角度来看,FPM将是发展最快的SAPI。与其他提到的SAPI相比,Apache或Nginx的性能更好。