c是靜態編譯的,執行效率比php**高很多。同樣的運算**,使用c來開發,效能會比php要提公升數百倍。io操作如curl,因為耗時主要在iowait上,c擴充套件沒有明顯優勢。
另外c擴充套件是在程序啟動時載入的,php**只能操作request生命週期的資料,c擴充套件可操作的範圍更廣。
ext_skel是php官方提供的用於生成php擴充套件骨架**的工具。
cd myext。可以看到php_myext.h、myext.c、config.m4等幾個檔案。config.m4是autoconf工具的配置檔案,用來修改各種編譯選項。
修改config.m4,將
dnl php_arg_with(myext, for myext support,dnl make sure that the comment is aligned:
dnl [ --with-myext include myext support])
修改為
php_arg_with(myext, for myext support,[ --with-myext include myext support])
下邊還有乙個 –enable-myext,是表示編譯到php核心中。with是作為動態鏈結庫載入的。
修改php_myext.h,看到php_function(confirm_myext_compiled); 這裡就是擴充套件函式宣告部分,可以增加一行 php_function(myext_helloworld); 表示宣告了乙個myext_helloworld的擴充套件函式。
然後修改myext.c,這個是擴充套件函式的實現部分。
const zend_function_entry myext_functions = ;
這的**是將函式指標註冊到zend引擎,增加一行php_fe(myext_helloworld, null)(後面不要帶分號)。
在myext.c末尾加myext_helloworld的執行**。
php_function(myext_helloworld)php_printf("hello world!\n");
retrun_true;
}
zend_parse_parameters是用來接受php傳入的引數,return_***巨集是用來返回給php資料。
在myext目錄下依次執行phpize、./configure 、make、make install。然後修改php.ini加入extension=myext.so
執行php -r 「myext_helloworld(『test』);」,輸出hello world!
Linux 下編寫乙個 PHP 擴充套件
假設需求 開發乙個叫做 helloword 的擴充套件。擴充套件裡有乙個函式,helloword echo helloword tom 返回 hello world tom 本地環境php版本 5.6.9 系統 linux centos release 6.5 final 最終效果 實現流程 第一步...
c 寫php擴充套件,如何用C語言編寫PHP擴充套件的詳解
1 預定義 在home目錄,也可以其他任意目錄,寫乙個檔案,例如caleng module.def 內容是你希望定義的函式名以及引數 int a int x,int y string b string str,int n 2 到php原始碼目錄的ext目錄 cd usr local php 5.4....
C 編寫PHP擴充套件
進入php5 ext目錄,用ext skel extname modulename生成乙個模板。進入php5 ext modulename 開啟config.m4,改寫成 php arg enable picen,whether to enable picen support,enable pice...