2012-03-30 104 views
41

我最近在PHP中學習錯誤處理,並且遇到了error_log()函數。在PHP手冊中,它講述了所有的錯誤日誌類型,並且我理解了所有錯誤日誌類型,除了類型3,它指出錯誤消息直接發送到SAPI日誌記錄處理程序。我的問題是SAPI究竟是什麼,你想什麼時候使用它?什麼是SAPI,您什麼時候使用它?

回答

35

SAPI代表「服務器API」。它是控制「外部世界」與PHP/Zend引擎之間交互的機制。所以,你總是會想要使用它。事實上,即使CLI被認爲是SAPI,也無法避免使用它。

+24

+0,需要詳細說明。 – Pacerier 2014-10-14 05:40:28

+3

那麼如何找出你的SAPI記錄器在由你的軟件包維護人員整齊組裝的運行配置上? (爲了讓它記錄下你非常想看到的信息:)) – n611x007 2015-08-24 11:48:24

14

維基百科:

換句話說,SAPI實際上是由Web服務器提供,以幫助其他開發人員在擴展Web服務器功能的應用程序編程接口(API)。

作爲一個例子,PHP有一個稱爲SAPI的直接模塊接口用於不同的Web服務器;在Windows 5上的PHP 5和Apache 2.0的情況下,它是以一種名爲php5apache2.dll的DLL文件的形式提供的,該文件是一個模塊,除了其他功能外,它還提供了PHP和Web服務器之間的接口,服務器理解。這種形式就是所謂的SAPI。

各種Web服務器擴展有不同種類的SAPI。例如,PHP語言的另外兩個SAPI是通用網關接口(CGI)和命令行接口(CLI)。

14

SAPI(服務器應用編程接口),也稱爲ISAPI(Internet服務器應用程序編程接口),對於微軟來說,NSAPI(Netscape服務器應用程序編程接口)爲Netscape。

API的含義。

對於Web開發人員,您可以考慮API,如REST,SOAP。你可以調用一個鏈接從服務器獲取數據。它允許您與Web服務器進行交互。

SAPI與REST或SOAP不同,SAPI是用於服務器的API(契約)。

例如:通用網關接口是一個SAPI。如果一個Web服務器支持CGI和另一個可執行程序來實現它,所以Web服務器可以動態地接口並生成網頁。

看下面的圖片:

SAPI apache and php

mod_php的實現,其Apache和PHP能夠互相理解的接口。

那麼SAPI究竟是什麼:它是服務器(任何一種服務器)和程序之間的契約。只要遵守合同,他們就不需要知道其他方的細節。

+0

你能告訴我這張照片是從哪裏拍攝的嗎?我正在尋找與這種圖形化插圖相關的主題材料。 – dwytrykus 2017-01-07 11:56:47

+0

我不記得確切。經過一些搜索舊的東西。我找到一個:http://www.slideshare.net/do_aki/php-and-sapi-and-zendengine2-and。希望有所幫助。 – 2017-01-11 01:35:32

相關問題