天天看點

php核心分析(一)-sapi_module_structmainsignal

這裡閱讀的php版本為PHP-7.1.0 RC3,閱讀代碼的平台為linux

首先是尋找php的入口,php有很多種模式,apache,php-fpm, cli模式,我要入手的話,隻能先從最簡單的cli模型開始。

那麼,我需要先尋找

這個指令是如何執行的。

首先還是尋找main入口,由于我們看的是指令行的php程式。是以,這個入口在sapi/cli/php_cli.c中。

首先是定義一系列的變量

然後是這個

sapi_module_struct *sapi_module = &cli_sapi_module;

這是一個sapi_module_struct結構,這個結構是sapi中最重要的資料結構。它的定義在main/SAPI.h中。

下面是增加了注釋的代碼:

那麼我們看下cli的SAPI的module是什麼樣子的呢?

其中我把裡面原先有的STANDARD_SAPI_MODULE_PROPERTIES宏給解出來展示如下:

有幾個點可以總結:

cli模式是不需要發送header的,是以對應header處理的三個函數

實際上都是空實作。

cookie也是同樣道理

其他的一些定義的函數,等到我們遇到的時候再分析吧。

回到main函數,根據上面的那個結構,我們就了解了

<code>#endif</code><code>本文轉自軒脈刃部落格園部落格,原文連結:http://www.cnblogs.com/yjf512/p/6084963.html,如需轉載請自行聯系原作者</code>