亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php的擴展寫法是怎樣的

發布時間:2021-10-13 10:58:08 來源:億速云 閱讀:96 作者:柒染 欄目:數據庫

php的擴展寫法是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

為什么要用C擴展

C是靜態編譯的,執行效率比PHP代碼高很多。同樣的運算代碼,使用C來開發,性能會比PHP要提升數百倍。IO操作如CURL,因為耗時主要在IOWait上,C擴展沒有明顯優勢。

另外C擴展是在進程啟動時加載的,PHP代碼只能操作Request生命周期的數據,C擴展可操作的范圍更廣。

第一步

下載PHP的源代碼,如php-5.4.16。解壓后進入php-5.4.16\ext目錄。輸入 ./ext_skel –extname=myext,myext就是擴展的名稱,執行后生成myext目錄。

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[] = {     PHP_FE(confirm_myext_compiled, NULL)      /* For testing, remove later. */     PHP_FE(myext_helloworld, NULL)     PHP_FE_END   /* Must be the last line in myext_functions[] */ };

這的代碼是將函數指針注冊到Zend引擎,增加一行PHP_FE(myext_helloworld, NULL)(后面不要帶分號)。

第四步

在myext.c末尾加myext_helloworld的執行代碼。

PHP_FUNCTION(myext_helloworld) {     char *arg = NULL;   int arg_len, len;   char *strg;   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {     return;   }   php_printf("Hello World!\n");   RETRUN_TRUE; }

zend_parse_parameters是用來接受PHP傳入的參數,RETURN_XXX宏是用來返回給PHP數據。

第五步

在myext目錄下依次執行phpize、./configure 、make、make install。然后修改php.ini加入extension=myext.so

執行php -r “myext_helloworld(‘test');”,輸出hello world!

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

深泽县| 维西| 内黄县| 六枝特区| 阿克苏市| 榆林市| 大埔区| 宕昌县| 吴忠市| 滨州市| 尚义县| 壤塘县| 洞头县| 万盛区| 新营市| 杨浦区| 大悟县| 大厂| 定州市| 罗甸县| 隆德县| 泽州县| 安阳县| 鲁山县| 石门县| 攀枝花市| 佛坪县| 渝中区| 静宁县| 建水县| 慈利县| 阿鲁科尔沁旗| 安丘市| 襄城县| 清原| 增城市| 上栗县| 格尔木市| 宁远县| 东辽县| 石渠县|