如何編寫乙個PHP的C擴充套件

2021-09-06 11:46:24 字數 1344 閱讀 4388

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...