php的擴充套件寫法總結

2021-09-28 20:12:23 字數 1612 閱讀 7246

為什麼要用c擴充套件

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!

JS擴充套件 或 Jquery的擴充套件寫法

js的擴充套件方法 1 定義類靜態方法擴充套件 2 定義類物件方法擴充套件 var aclass function 1 定義這個類的靜態方法 aclass.sayhello function 2 定義這個類物件的物件方法 aclass.prototype.protosayhello function...

jQuery的擴充套件方法寫法

擴充套件jquery物件本身。用來在jquery命名空間上增加新函式。檢視 jquery.fn.extend 獲取更多新增外掛程式的資訊。描述 在jquery命名空間上增加兩個函式。jquery jquery.extend max function a,b 結果 jquery.min 2,3 2 j...

高效php的寫法

1.單引號代替雙引號來包含字串 2.銷毀變數去釋放記憶體,特別是大的陣列 陣列和物件在php特別佔記憶體的,這個由於php的底層的zend引擎引起的,一般來說,php陣列的記憶體利用率只有 1 10,也就是說,乙個在c語言裡面100m 記憶體的陣列,在php裡面就要1g。特別是在php作為後台伺服器...