PHP擴展開發探索(一)

   開發環境:Centos 6.2 ;apace 2.2; php 5.5.5 ;

   第一步:擴展文件生成

                  運行PHP源碼中ext中的ext_skel腳本(主要參數爲 --extname ),會在ext中生成extname的文件夾,即擴展項目(本次測試使用sayhello作爲模塊名)

   第二步:擴展項目文件

                 查看sayhello文件下,有一下幾個重要文件:config.m4    php_sayhello.h  sayhello.php     sayhello.c 。

                 (1)sayhello.c :

                   基本函數:

                   PHP_INI_BEGIN():  加載擴展在php.ini中的配置信息;

        PHP_MINIT_FUNCTION(sayhello):php初始化時,都會執行每個模塊的初始化函數;
        PHP_MSHUTDOWN_FUNCTION(sayhello);apache stop的時候,卸載php模塊,這個時候執行此函數;
        PHP_RINIT_FUNCTION(sayhello):每次request執行的函數;
        PHP_RSHUTDOWN_FUNCTION(sayhello);request結束或者被die(exit)掉了,執行這個函數,收拾爛攤子(釋放內存等等);
        自定義函數:
        PHP_FUNCTION(sayhello):你的擴展定義的函數,必須使用zend給定的這個宏來定義,每一個定義的函數都必須加入到 sayhello_functions[]
                               這個結構體中。
       (2)config.m4 保存擴展編譯配置信息的文件
  第三步: 修改config.m4,讓你的sayhello可以被編譯
        PHP_ARG_ENABLE(sayhello, whether to enable sayhello support,
        dnl Make sure that the comment is aligned:
        [  --enable-sayhello           Enable sayhello support])
  第四步:正常的編譯步驟./config make  make install 生成sayhello.so
  第五步:配置php.in,重啓服務器,就可以在php代碼中使用自己sayhello擴展的sayhello函數了
  windows使用擴展最好在windows下重新編譯源碼生成dll.
 


      
        
                   

   

   

              


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章