【问题标题】:What is SAPI and when would you use it?什么是 SAPI,什么时候使用它?
【发布时间】:2012-03-30 17:50:56
【问题描述】:

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

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

【问题讨论】:

    标签: php sapi


    【解决方案1】:

    SAPI 代表“服务器 API”(API 代表“应用程序编程接口”)。它是控制“外部世界”与 PHP/Zend 引擎之间交互的机制。所以,你总是想使用它。事实上,不费吹灰之力就无法避免使用它,因为即使 CLI 也被视为 SAPI。

    【讨论】:

    • +0,需要详细说明。
    • 那么您如何找出您的 SAPI 记录器在由您的包维护者整齐组装的运行配置中是什么? (为了让它记录你迫切想看到的消息:)。)
    【解决方案2】:

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

    API 含义。

    对于 Web 开发人员,您可以想到 API,例如 REST、SOAP。您调用链接从服务器获取数据。它允许您与 Web 服务器交互。

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

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

    看下图:

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

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

    【讨论】:

    【解决方案3】:

    来自Wikipedia

    也就是说,SAPI实际上是Web服务器提供的一个应用程序编程接口(API),用于帮助其他开发者扩展Web服务器的能力。

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

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

    【讨论】:

      【解决方案4】:

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

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

      让我提醒一下,FPM(FastCGI 进程管理器)与 PHP FastCGI 实现非常接近,并具有一些(大部分)对重负载站点有用的附加功能。

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

      【讨论】:

      • 当用作 phpquery 的 sapi_name 参数时,它区分大小写,因此“FPM”返回:“指定的 SAPI (FPM) 无效”,而“fpm”有效。
      • 你说:“Apache 或 Nginx 会比其他提到的 SAPI 表现更好”,但这仍然需要一个 SAPI 来解释 PHP,所以有点模棱两可。而且我不太明白SAPI和CGI的区别,好像是PHP发明的东西?
      • 这意味着 FPM 下的 Apache 或 Nginx 会表现得更好等。
      猜你喜欢
      • 1970-01-01
      • 2011-05-20
      • 2011-01-18
      • 2010-09-17
      • 2011-08-18
      • 2017-03-21
      • 2011-03-25
      • 2011-06-09
      • 2011-03-22
      相关资源
      最近更新 更多