使用C建立php擴充套件

2021-08-31 19:53:19 字數 2830 閱讀 5314

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

使用c建立php擴充套件

優點:

1.提高執行效率。

2.降低php複雜度,可以直接呼叫擴充套件方法實現功能。

3.方便與第三方庫互動。

缺點:

1.開發比php複雜。

2.可維護性降低。

3.開發周期變長。php開發,發現問題後,只要修復問題,即可見到效果。如果使用擴充套件,修復後需要重新編譯,重啟服務,才能見到效果。

php實現方法:

<?php 

function

strtolink

($url, $name='', $openwin=0)

echo strtolink('', 'fdipzone blog', 1);?>

現在使用c來做這個方法的擴充套件,開發php擴充套件需要使用ext_skel工具包,此工具包在php安裝包的 /ext/ 中,例如:php-5.3.15/ext/ext_skel

1.建立 skel 檔案,儲存為 strtolink.skel

string strtolink(string url, string name, int openwin)
2.建立擴充套件框架

./ext_skel --extname=strtolink --proto=strtolink.skelcd strtolink
3.修改配置檔案 config.m4

將這10,11,12三行前面的 dnl 去掉dnl php_arg_with(strtolink, for strtolink support,dnl make sure that the comment is aligned:dnl [  --with-strtolink             include strtolink support])即修改為:php_arg_with(strtolink, for strtolink support,make sure that the comment is aligned:[  --with-strtolink             include strtolink support])
4.實現功能,修改strtolink.c,將php_function(strtolink)這個方法修改為:

php_function(strtolink)        if (openwin == 1)else        url_len = spprintf(&result, 0, "%s", url, opentag, name);        return_stringl(result, url_len, 0);        php_error(e_warning, "strtolink: not yet implemented");}
5.編譯擴充套件

phpizesudo ./configuresudo makesudo make test
make 如果出現 error: 『php_fe_end』 undeclared here (not in a function)

使用下面語句可解決,之後再重新編譯

sed -i 's|php_fe_end||' ./strtolink.c  sed -i 's|zend_mod_end||' ./strtolink.c
成功後在strtolink/modules 下找到strtolink.so 檔案

6.新增擴充套件將strtolink.so 複製到 php 擴充套件目錄,可以通過phpinfo的 extension_dir 檢視擴充套件目錄位置

sudo cp strtolink.so /usr/lib/php5/20090626/strtolink.so
修改php.ini ,在最後新增 extension="strtolink.so"

重啟動apache,phpinfo中會見到新擴充套件 strtolink

7.使用擴充套件

用回之前的php,只是把strtolink function 去掉便可。此方法已在擴充套件實現,可直接呼叫。

<?php 

echo strtolink('', 'fdipzone blog', 1)."\r\n";echo strtolink('', 'fdipzone blog', 0)."\r\n";echo strtolink('', 'fdipzone blog')."\r\n";echo strtolink('', '', 1)."\r\n";echo strtolink('', '')."\r\n";echo strtolink('', null, null)."\r\n";?>

輸出:

fdipzone blog

fdipzone blog

fdipzone blog

給我老師的人工智慧教程打call!

使用C建立php擴充套件

使用c建立php擴充套件 優點 1.提高執行效率。2.降低php複雜度,可以直接呼叫擴充套件方法實現功能。3.方便與第三方庫互動。缺點 1.開發比php複雜。2.可維護性降低。3.開發周期變長。php開發,發現問題後,只要修復問題,即可見到效果。如果使用擴充套件,修復後需要重新編譯,重啟服務,才能見...

使用C語言來擴充套件PHP,寫PHP擴充套件dll

以前寫過一次php擴充套件dll,那個是利用呼叫系統的com口實現的擴充套件,與php不能真正融合。心血來潮,研究了一下php的原始碼,網上找了一些資料,自己嘗試寫了乙個擴充套件dll,測試沒問題。下面記錄一下具體擴充套件方法 3 把vc 6.0安裝目錄中的 microsoft visual stu...

使用C語言來擴充套件PHP,寫PHP擴充套件dll

以前寫過一次php擴充套件dll,那個是利用呼叫系統的com口實現的擴充套件,與php不能真正融合。心血來潮,研究了一下php的原始碼,網上找了一些資料,自己嘗試寫了乙個擴充套件dll,測試沒問題。下面記錄一下具體擴充套件方法 3 把vc 6.0安裝目錄中的 microsoft visual stu...