好久沒有寫關於PHP的東西了,這次我們講一下PHP內核相關的知識。
按照管理,在開始講解之前我們先准備一下環境:
環境准備:
1. Linux環境,我們使用ubuntu/debian 這兩個系統都可以
2. PHP源代碼,我們講解的代碼為php-5.4.13.tar.gz,代碼大家可以到php官網上面進行下載
3. webserver使用nginx,數據庫為mysql
其中必須准備php源代碼,nginx和mysql可以選擇性安裝
PHP源代碼下載完成後,我們將源代碼解壓,先看一下源代碼的目錄結構:
build: 這裡面主要是一些和源碼編譯相關的文件
ext: PHP擴展源碼路徑
main:
Zend: zend引擎實現目錄
pear: php擴展以及應用倉庫
sapi: 各種服務器抽象層代碼,如apache,nginx等
TSRM: 線程安全資源管理器
test: 測試代碼
源碼查看的話,我們使用vim+ctags,如果您不明白這個是什麼的話,麻煩自己百度一下。
知識准備:
PHP源碼中用到很多的宏定義,在開始之前,我們先溫習一下宏相關的知識。
1. 雙##號 這個是C語言中的連接符,我們來看一個例子你就明白了。
#define TEST(name) hello_##name
我們看一下調用:TEST(world)的結果為: hello_world
你看明白了嗎!
2. 我們再來看一下但個的#號,這個符號的作用是在宏變量替換後的值前面後面添加雙引號,我們看一個例子
#define TEST(str) #str
我們看一下調用: printf(TEST(HELLO WORLD));的結果為 printf("HELLO WORLD");
3. #line 這個指令用來改變當前的行號和文件名
4. 還有一些常用的宏,這些宏我們會在以後用到時候進行介紹