欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php的擴展寫法總結

 更新時間:2019年05月14日 08:35:19   投稿:laozhang  
在本篇文章里小編給大家分享了關于怎么寫php的擴展的相關知識點內容,有需要的朋友們跟著學習下。

為什么要用C擴展

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

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

第一步

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

ext_skel是PHP官方提供的用于生成php擴展骨架代碼的工具。

cd myext??梢钥吹絧hp_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是作為動態(tài)鏈接庫載入的。

第三步

修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 這里就是擴展函數(shù)聲明部分,可以增加一行 PHP_FUNCTION(myext_helloworld); 表示聲明了一個myext_helloworld的擴展函數(shù)。

然后修改myext.c,這個是擴展函數(shù)的實現(xiàn)部分。

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[] */

};

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

第四步

在myext.c末尾加myext_helloworld的執(zhí)行代碼。

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傳入的參數(shù),RETURN_XXX宏是用來返回給PHP數(shù)據(jù)。

第五步

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

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

相關文章

  • PHP session垃圾回收機制實例分析

    PHP session垃圾回收機制實例分析

    這篇文章主要介紹了PHP session垃圾回收機制,簡單分析了session垃圾回收機制的原理、配置及相關使用技巧,需要的朋友可以參考下
    2019-06-06
  • PHP實踐教程之過濾、驗證、轉義與密碼詳解

    PHP實踐教程之過濾、驗證、轉義與密碼詳解

    我們在開發(fā)應用時,一般有個約定:不要信任任何來自不受自己控制的數(shù)據(jù)源中的數(shù)據(jù)。所以這個時候就用到了這篇文章介紹的內容,本文主要給大家介紹了關于PHP實踐教程之過濾、驗證、轉義與密碼的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • php時間戳轉換代碼詳解

    php時間戳轉換代碼詳解

    在本篇文章里小編給各位分享一篇關于php時間戳轉換的知識點內容,有需要的朋友們可以參考下。
    2019-08-08
  • 學習php設計模式 php實現(xiàn)建造者模式

    學習php設計模式 php實現(xiàn)建造者模式

    這篇文章主要介紹了php設計模式中的建造者模式,使用php實現(xiàn)建造者模式,感興趣的小伙伴們可以參考一下
    2015-12-12
  • php實現(xiàn)數(shù)字轉億萬單位的示例代碼

    php實現(xiàn)數(shù)字轉億萬單位的示例代碼

    這篇文章主要為大家詳細介紹了php如何實現(xiàn)數(shù)字轉億萬單位,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • 淺談php和js中json的編碼和解碼

    淺談php和js中json的編碼和解碼

    下面小編就為大家?guī)硪黄獪\談php和js中json的編碼和解碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • PHP設計模式之適配器模式定義與用法詳解

    PHP設計模式之適配器模式定義與用法詳解

    這篇文章主要介紹了PHP設計模式之適配器模式,結合實例形式較為詳細的分析了php適配器模式的概念、原理、定義、用法及相關注意事項,需要的朋友可以參考下
    2018-04-04
  • php代碼調試利器firephp安裝與使用方法分析

    php代碼調試利器firephp安裝與使用方法分析

    這篇文章主要介紹了php代碼調試利器firephp安裝與使用方法,簡單分析了firephp的下載、安裝、測試代碼調試等使用方法及相關操作技巧,需要的朋友可以參考下
    2018-08-08
  • PHP實現(xiàn)將上傳圖片自動縮放到指定分辨率,并保持清晰度封裝類示例

    PHP實現(xiàn)將上傳圖片自動縮放到指定分辨率,并保持清晰度封裝類示例

    這篇文章主要介紹了PHP實現(xiàn)將上傳圖片自動縮放到指定分辨率,并保持清晰度封裝類,涉及php針對jpeg、png、gif等格式圖片的縮放與輸出相關操作技巧,需要的朋友可以參考下
    2019-06-06
  • 與文件上傳有關的php配置參數(shù)總結

    與文件上傳有關的php配置參數(shù)總結

    搞個了圖片上傳,死活不好使,后來發(fā)現(xiàn)是php參數(shù)配置的問題,下面總結下與文件上傳有關的php參數(shù),有類似情況的朋友可以參考下哈
    2013-06-06

最新評論