要執行乙個web指令碼語言需要三個部分:
1·分析輸入的**,並翻譯和執行
2·功能部分,執行語言的功能要求
3·與web伺服器對話部分
zend執行第一部分和第二部分的一小部,php執行其餘部分。zend是語言的核心,根據一些預先定義的函式執行一些基本的功能。php包括所有的外部功能模組。
php的擴充套件可包括三種方式:1·外部模組擴充套件;2·在編譯php時將模組和php一起編譯;3·修改zend引擎。
這三種方式各有優劣。一般選擇第一種(如常用的gd庫和php5中使用的mysql庫),好處是不需要重新編譯php,壞處是動態模組的載入需要額外時間。
首先看三個標頭檔案:
1·在main下面的php.h檔案,包含了許多系統的.h檔案,定義了很多常量、函式和巨集,根據系統編譯環境判斷一些函式是否存在,如果不存在則編譯php**中編寫的這些函式,通過巨集定義統一了在不同環境下實現相同功能但函式名不同的函式。
2·在zend下的zend.h函式定義了一些資料結構,也包含了一些資料結構的.h檔案,如hash和list。
3·在zend下的zend_api.h檔案將一些函式定義為巨集,這些函式主要用於對php**的編譯。
php 學習編譯擴充套件
原文 系統環境 ubuntu 目標 可以像 php 提供的內部函式一樣,使用 myecho 函式 輸出如下 1.獲取 php 的原始碼 選擇乙個適合的版本 比如 php 7.0.2.tar.gz 2.解壓 tar xvf php 7.0.2.tar.gz c install dir 4.instal...
PHP SPL擴充套件學習筆記
一.spl是幹嘛的 spl是用於解決典型問題 standard problems 的一組介面與類的集合。資料結構 1.實現雙向列表 spldoublylinkedlist implements iterator arrayaccess countable 2 splstack extends spl...
擴充套件KMP學習筆記
對於字串 s 定義 z i 為從位置 i 開始的 s 字尾與 s 的最長公共字首的長度。擴充套件 kmp 就是用於在 mathcal o n 複雜度下求解 z 函式的演算法。既然是擴充套件 kmp 那麼當然與 kmp 有一定的關係 這一點主要體現在思想上,兩者都在求解的過程中通過之前已經求解的答案來...