麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

深入理解PHP內核(二)之SAPI探究

2020-03-22 20:08:43
字體:
來源:轉載
供稿:網友
在上篇文章給大家介紹了深入了解PHP內核(一),相信大家通過本文多多少少都學到些知識吧,關于php內核知識繼續關注本篇文章。SAPI是Server Application Programming Interface(服務器應用編程接口)的縮寫。PHP通過SAPI提供了一組接口,供應用和PHP內核之間進行數據交互。簡單的講,就像函數的輸入和輸出一樣,我們通過Linux命令行執行一段PHP代碼,本質是Linux的Shell通過PHP的SAPI傳入一組參數,Zend引擎執行后,返回給shell,由shell顯示出來的過程。同樣的,通過Apache調用PHP,通過Web服務器給SAPI傳入數據,Zend引擎執行后,返回給Apache,由Apache顯示在頁面上。
圖1. PHP架構圖
PHP提供很多種形式的接口,包括apache、apache2filter、apache2handler、caudium、cgi 、cgi-fcgi、cli、cli-server、continuity、embed、isapi、litespeed、milter、nsapi、phttpd pi3web、roxen、thttpd、tux和webjames。但是常用的只有5種形式,CLI/CGI(命令行)、Multiprocess(多進程)、Multithreaded(多線程)、FastCGI和Embedded(內嵌)。PHP提供了一個函數查看當前SAPI接口類型:http://www.phpstudy.net/article/74641.htmSAPI的運行機制我們以CGI為例,看一下SAPI的運行機制。html' target='_blank'>static sapi_module_struct cgi_sapi_module = { "cgi-fcgi", /* 輸出給php_info()使用 */ "CGI/FastCGI", /* pretty name */ php_cgi_startup, /* startup 當SAPI初始化時,首先會調用該函數 */ php_module_shutdown_wrapper, /* shutdown 關閉函數包裝器,它用來釋放所有的SAPI的數據結構、內存等,調用php_module_shutdown */ sapi_cgi_activate, /* activate 此函數會在每個請求開始時調用,它會做初始化,資源分配 */ sapi_cgi_deactivate, /* deactivate 此函數會在每個請求結束時調用,它用來確保所有的數據都得到釋放 */ sapi_cgi_ub_write, /* unbuffered write 不緩存的寫操作(unbuffered write),它是用來向SAPI外部輸出數據 */ sapi_cgi_flush, /* flush 刷新輸出,在CLI模式下通過使用C語言的庫函數fflush實現*/ NULL, /* get uid */ sapi_cgi_getenv, /* getenv 根據name查找環境變量 */ php_error, /* error handler 注冊錯誤處理函數 */ NULL, /* header handler PHP調用header()時候被調用 */ sapi_cgi_send_headers, /* send headers handler 發送頭部信息*/ NULL, /* send header handler 發送一個單獨的頭部信息 */ sapi_cgi_read_post, /* read POST data 當請求的方法是POST時,程序獲取POST數據,寫入$_POST數組 */ sapi_cgi_read_cookies, /* read Cookies 獲取Cookie值 */ sapi_cgi_register_variables, /* register server variables 給$_SERVER添加環境變量 */ sapi_cgi_log_message, /* Log message 輸出錯誤信息 */ NULL, /* Get request time */ NULL, /* Child terminate */ STANDARD_SAPI_MODULE_PROPERTIES }; 由上面代碼可見,PHP的SAPI像是面向對象中基類,SAPI.h和SAPI.c包含的函數是抽象基類的聲明和定義,各個服務器用的SAPI模式,則是繼承了這個基類,并重新定義基類方法的子類。總結PHP的SAPI是Zend引擎提供的一組標準交互接口,通過注冊初始化、析構、輸入、輸出等接口,我們可以將應用程序運行在Zend引擎上,也可以把PHP嵌入到類似Apache的Web Server中。PHP常見的SAPI模式有五種,CGI/CLI模式、多進程模式、多線程模式、FastCGI模式和內嵌模式。了解PHP的SAPI機制意義重大,幫助我們理解PHP的生命周期,并了解如何更好的通過C/C++為PHP編寫擴展,并在生命周期中找到提高系統性能的方式。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 最污网站 | 亚洲一区二区免费视频 | 国产成人精品一区在线播放 | 午夜精品福利影院 | 99激情| 国产精品美女久久久免费 | 国产69久久精品成人看 | 亚洲精品欧美二区三区中文字幕 | 九色 在线 | 国产午夜亚洲精品理论片大丰影院 | 欧美一级鲁丝片免费看 | 一区二区久久久久草草 | 国产一级免费不卡 | 国产精品麻豆一区二区三区 | 久久国产精品影视 | jizzzzxxxxx| 欧美成人一区免费视频 | 免费观看的毛片手机视频 | 免费a级毛片大学生免费观看 | 欧美一级做a| 亚洲字幕av| 中文字幕涩涩久久乱小说 | 欧美亚洲国产一区二区三区 | 国产成人在线综合 | 日韩视频一区二区 | 国产羞羞视频在线观看 | 久久久久在线观看 | 午夜国产精品成人 | 久久国产成人精品国产成人亚洲 | 成人男女啪啪免费观看网站四虎 | 久久影院午夜 | av手机免费在线观看 | 国产亚洲欧美日韩在线观看不卡 | 毛片免费在线播放 | 欧美高清视频一区 | 日韩精品久久久 | 国产毛片网 | 日本娇小videos高潮 | 91久久国产综合久久91猫猫 | 毛片免 | 91成人免费电影 |