承接上篇將 WebService 客戶端 main() 重構為 testPhpModule(),將控制台輸出改為字符串返回,編譯生成動態庫 libTest.so。本文詳述如何將其封裝為 PHP 5 模塊。
libTest.so 複製至 /usr/lib/sbin/ldconfig 更新動態鏈接庫緩存cd php-src/ext
./ext_skel --extname=your_module_name
config.m4進入生成的模塊目錄,編輯 config.m4,找到以下代碼並去掉每行首的 dnl:
dnl PHP_ARG_WITH(your_module, for your_module support,
dnl Make sure that the comment is aligned:
dnl [ --with-your_module Include your_module support])
或啟用模式:
dnl PHP_ARG_ENABLE(your_module, whether to enable your_module support,
dnl Make sure that the comment is aligned:
dnl [ --enable-your_module Enable your_module support])
建議:動態加載優先使用 --enable- 方式。
php_your_module.h 聲明 PHP_FUNCTION(testPhpModule)your_module_functions 中註冊 PHP_FE(testPhpModule, NULL)your_module.c 實現函數,調用 libTest.so 中的導出符號phpize && ./configure --enable-your_module && makemodules/your_module.so 複製至 PHP 擴展目錄,修改 php.ini 載入完成後,即可在 PHP 中直接調用 testPhpModule() 獲得 C 庫處理結果,實現高性能計算邏輯的 PHP 化復用。