使用C建立php擴充套件

2021-06-20 21:18:05 字數 2890 閱讀 8027

使用c建立php擴充套件

優點:

1.提高執行效率。

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

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

缺點:

1.開發比php複雜。

2.可維護性降低。

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

首先,假定需要實現乙個方法:將url字串轉換成超連結。

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.skel

cd 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.編譯擴充套件

phpize

sudo ./configure

sudo make

sudo 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

使用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...