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

我最近一直在学习 PHP 中的错误处理,偶然发现了 error_log()功能

在 PHP 手册中,它讨论了所有的错误日志类型,我理解所有的错误日志类型,但是类型3除外,它指出错误消息是直接发送给 SAPI 日志处理程序的。我的问题是 SAPI 到底是什么以及您想在什么时候使用它?

47609 次浏览

SAPI 代表“服务器 API”(API 代表“应用程序编程接口”)。它是控制“外部世界”和 PHP/Zend 引擎之间交互的机制。所以,你会一直想用它。事实上,如果不花费很多精力,就无法避免使用它,因为甚至连 CLI 都被认为是 SAPI。

来自 维基百科:

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

例如,PHP 为不同的 web 服务器提供了一个名为 SAPI 的直接模块接口; 对于 Windows 上的 PHP 5和 Apache 2.0,它是以一个名为 php5apache2.DLL 的 DLL 文件的形式提供的,这是一个模块,除了其他功能之外,还提供了 PHP 和 web 服务器之间的接口,以服务器可以理解的形式实现。这个表单就是所谓的 SAPI。

针对不同的 Web 服务器扩展有不同类型的 SAPI。例如,PHP 语言的另外两个 SAPI 是通用网关接口(cGI)和命令行界面(CLI)。

SAPI (服务器应用程序编程接口)也称为微软的 ISAPI(因特网服务器应用程序编程接口) ,Netscape 的 NSAPI(网景服务器应用程序编程接口)。

空气污染指数 含义。

对于 web 开发人员来说,你可以考虑像 REST、 SOAP 这样的 API。你调用一个从服务器获取数据的链接。它允许你与网络服务器交互。

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

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

看看下面的图片:

SAPI apache and php

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

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

对于 PHP,可用的 SAPI 有: Apache2(mod _ PHP)、 FPM、 CGI、 FastCGI 和 CLI。

如果 API 运行在服务器上,可以称为 SAPI。

让我提醒一下,FPM (FastCGI Process Manager)与 PHP FastCGI 实现非常接近,有一些额外的特性(大多数)对于重载站点非常有用。

今天,从速度和效率的角度来看,FPM 将是最先进的 SAPI。Apache 或 Nginx 将比其他提到的 SAPI 执行得更好。

通常,PHP 应用程序很少需要知道它们的 SAPI。如果脚本是从 cron 调用的,而不是从 Web 浏览器调用的,那么这通常很重要,在这种情况下,它会检查它是否是 SAPI 等于“ cli”