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