亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Windows環(huán)境下PHP動態(tài)鏈接庫開發(fā)研究

        2017-06-02 13:16:24聶慶鵬
        關(guān)鍵詞:擴(kuò)展

        聶慶鵬

        摘要:PHP是當(dāng)前應(yīng)用十分廣泛的Web編程語言。雖然PHP為開發(fā)者提供了大量擴(kuò)展函數(shù),但在很多特殊應(yīng)用場合,仍需要自定義開發(fā)擴(kuò)展函數(shù)庫。當(dāng)前從操作層面完整介紹PHP擴(kuò)展函數(shù)開發(fā)技術(shù)的資料還十分匱乏。本文以Windows平臺為例,詳細(xì)探究了在VS2008環(huán)境下開發(fā)PHP5.4.X版本的擴(kuò)展函數(shù)(動態(tài)鏈接庫)的實(shí)現(xiàn)思路和步驟,并通過實(shí)踐進(jìn)行了諫言。

        關(guān)鍵詞:PHP;動態(tài)鏈接庫;擴(kuò)展

        中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)04-0207-01

        1 引言

        PHP(Personal Homepage:HyperText Preprocessor)是一種應(yīng)用十分廣泛的Web編程語言。該語言的一個重要特點(diǎn)是提供了大量擴(kuò)展函數(shù),幫助開發(fā)者完成常用操作。在Windows平臺上,這些函數(shù)是以若干個DLL(Dynamic Link Library,動態(tài)鏈接庫)方式提供的。但這些函數(shù)仍不能完全滿足開發(fā)者的個性化需求。在很多特殊應(yīng)用場合下,需要自行開發(fā)動態(tài)鏈接庫,對PHP進(jìn)行功能擴(kuò)展。但由于PHP的版本眾多,源代碼體系十分復(fù)雜,官方的技術(shù)支持資料又比較缺乏,讓很多開發(fā)者望而卻步。本文以Windows平臺為例,對PHP動態(tài)鏈接庫開發(fā)的一般過程和相關(guān)技術(shù)進(jìn)行了詳細(xì)研究,給出了詳細(xì)步驟和具體操作方法,并通過實(shí)踐進(jìn)行了驗(yàn)證。

        2 開發(fā)思路與過程

        PHP屬于開放源代碼軟件,其源代碼可以在官方網(wǎng)站下載得到。PHP的源代碼使用C語言編寫,需要使用編譯工具進(jìn)行編譯和調(diào)試。因此,需要下載PHP的源代碼文件,使用PHP官方提供的PHP擴(kuò)展開發(fā)模板創(chuàng)建程序“骨架”,使用相應(yīng)版本的C語言開發(fā)環(huán)境進(jìn)行編譯和調(diào)試,最終編譯出所需要的DLL文件。必須指出的是,PHP的版本和編譯器有直接關(guān)系。本文以PHP5.4版本為例,需要搭配Visual Studio 2008(VC9)環(huán)境進(jìn)行調(diào)試和編譯。

        2.1 開發(fā)環(huán)境搭建

        基本的PHP動態(tài)鏈接庫開發(fā)環(huán)境包括:(1)Visual Studio 2008;(2)PHP5.4.X Windows平臺二進(jìn)制包。使用IIS作為調(diào)試軟件時(shí),需使用PHP的線程安全(ThreadSafe,TS)版本,如果使用APACHE作為調(diào)試軟件,需使用非線程安全(Non-ThreadSafe,NTS)版本;(3)PHP5.4.45源代碼包;(4)PHP SDK開發(fā)包;(5)與PHP SDK版本對應(yīng)的deps包;(6)MSys1.0小型GUN環(huán)境工具[1]。

        2.2 重新編譯PHP

        從官方網(wǎng)站獲取的PHP源代碼和SDK中缺少開發(fā)動態(tài)鏈接庫所必須的config.win32.h,需要通過對PHP進(jìn)行重新編譯來生成。其步驟如下:

        (1)創(chuàng)建自定義目錄C:\php_studio\作為工作目錄,以下用%dir%表示本目錄;(2)解壓PHP SDK至 %dir%php_sdk,使用命令行窗口運(yùn)行VS2008安裝路徑下的vcvarsall.bat批處理文件。運(yùn)行后會輸出運(yùn)行成功的提示。(3)進(jìn)入%dir%php_sdk\bin目錄,分別運(yùn)行批處理文件“phpsdk_setvars.bat”和“phpsdk_buildtree.bat php54dev”,在bin目錄下產(chǎn)生php54dev文件夾。(4)將deps包解壓到 %dir%\php-sdk\php54dev\vc9\x86\目錄,覆蓋掉該目錄下原有的deps目錄;解壓PHP源代碼包到%dir%\php_stdio\php-sdk\php54dev\vc9\x86\,文件夾名為php5445,本文件夾即PHP源代碼的根目錄。(5)使用命令行進(jìn)入PHP源代碼根目錄,運(yùn)行“buildconf”命令。(6)運(yùn)行“configure --disable-all --enable-cli”命令,以最小化方式編譯PHP。命令執(zhí)行后,有一系列輸出,結(jié)尾部分顯示“Type nmake to build PHP”。打開源代碼文件夾的main子文件夾,發(fā)現(xiàn)自動創(chuàng)建了config.win32.h,這說明PHP編譯成功。

        2.3 創(chuàng)建新擴(kuò)展框架

        PHP為開發(fā)者提供了動態(tài)鏈接庫文件的框架,運(yùn)行ext_skel_ win32.php可以自動創(chuàng)建,為后面的編寫代碼提供基礎(chǔ)[2]。其步驟如下:

        (1)命令行下進(jìn)入PHP源代碼目錄下的ext文件夾,其中有ext_skel_win32.php文件,該文件即Windows下創(chuàng)建擴(kuò)展骨架的工具。執(zhí)行“php ext_skel_win32.php --extname=myFunc”命令,其中,myFunc為自定義的擴(kuò)展名稱。運(yùn)行后得到一系列屏幕輸出(略)。(2)打開%dir%\php-sdk\php54dev\vc9\x86\php5445\ext可以看到一個新建的myFunc文件夾,其中包含若干文件,如myFunc.dsp等,這就是新擴(kuò)展的框架文件,可以直接用VS2008打開進(jìn)行編輯。

        2.4 在VS2008中編譯擴(kuò)展

        擴(kuò)展框架創(chuàng)建完畢后,需要使用VS2008編輯、編譯項(xiàng)目文件。項(xiàng)目文件默認(rèn)為調(diào)試項(xiàng)目,需要進(jìn)行參數(shù)配置。步驟如下:

        (1)將項(xiàng)目“活動解決方案配置”由Debug_TS修改為Release_TS。(2)將“設(shè)置運(yùn)行庫”設(shè)為“多線程 DLL(/MD)”。(3)將“編譯”設(shè)置為“編譯為C代碼(/TC)”。(4)將“輸出文件”設(shè)置為“Release_TS/php_myFunc.dll”。(5)在“附加庫目錄”中增加“%dir% \php5.4.45\dev”。

        進(jìn)行完上述配置后,執(zhí)行編譯命令,在ext\myFunc目錄下會生成php_myFunc.dll,說明一個空白的動態(tài)鏈接庫編譯完畢。

        2.5 編寫自定義函數(shù)

        上一步得到的動態(tài)鏈接庫僅作為調(diào)試環(huán)境測試對象,并沒有包含用戶自定義函數(shù)代碼。要在其中編寫自定義函數(shù)來完成特殊操作,可以按照以下步驟進(jìn)行。

        (1)用VS2008打開myFunc.h,在默認(rèn)函數(shù)PHP_FUNCTION(confirm_myFunc_compiled);下面,定義自己的函數(shù)名:PHP_FUNCTION(myfunc_test);(2)打開myFunc.c源代碼,在PHP_FE(comfirm_myFunc_compiled, NULL)下面,添加自己的函數(shù):PHP_FE(myfunc_test , MULL)(3)在myFunc.c中末尾處繼續(xù)添加

        PHP_FUNCTION(myfunc_test){ //函數(shù)體 }

        函數(shù)體編寫完成后,編譯生成DLL動態(tài)鏈接庫,將生成的php_myFunc.dll文件載入到PHP擴(kuò)展之中,則在PHP程序中可以直接通過以下方式調(diào)用自定義擴(kuò)展函數(shù)。

        <?php echo myfunc_test(); ?>

        3 結(jié)語

        本文綜合各方面研究資料,詳細(xì)梳理了Windows平臺下搭建PHP擴(kuò)展開發(fā)環(huán)境和進(jìn)行動態(tài)鏈接庫開發(fā)的流程和步驟,尤其對其中的關(guān)鍵環(huán)節(jié)進(jìn)行了剖析,對于PHP擴(kuò)展開發(fā)人員具有很好的參考價(jià)值。由于PHP源代碼體系十分龐大,本文并未對自定義函數(shù)的實(shí)現(xiàn)部分進(jìn)行過多分析,如要進(jìn)行復(fù)雜的擴(kuò)展開發(fā),需要對PHP內(nèi)核進(jìn)行更加深入分析和探究。

        參考文獻(xiàn)

        [1]Windows中搭建PHP擴(kuò)展開發(fā)環(huán)境[Z].2012-10-25.

        [2]PHP擴(kuò)展開發(fā)及內(nèi)核應(yīng)用[Z].2015-10-22.

        猜你喜歡
        擴(kuò)展
        淺談數(shù)據(jù)挖掘和自適應(yīng)算法的應(yīng)用
        多維傳播語境下的播音主持功能與拓展研究
        恒溫晶體振蕩器調(diào)頻范圍擴(kuò)展思考
        財(cái)務(wù)管理內(nèi)容擴(kuò)展的路徑與方法
        淺談小學(xué)英語教學(xué)中的情境教學(xué)法
        反詰—指令言語行為范疇擴(kuò)展的關(guān)聯(lián)性解釋
        科技視界(2015年35期)2016-01-04 10:12:30
        丰满人妻一区二区三区52| 99精品电影一区二区免费看| 国产精品无码无片在线观看3D| 亚洲中文字幕国产综合| 狼人伊人影院在线观看国产| 久久综合九色综合久99| 免费大片黄在线观看| 国产精品亚洲综合色区丝瓜 | 国产在视频线精品视频www666| 黄色三级视频中文字幕| av黄色在线免费观看| 97人人模人人爽人人少妇| 91精品手机国产在线能| 国产精品污一区二区三区在线观看| 国产夫妻自拍视频在线播放| 人人妻人人爽人人澡人人| 2022Av天堂在线无码| 日本高清一区二区三区在线| 欧洲美熟女乱av亚洲一区| 99久久亚洲精品无码毛片| 欧美性爱一区二区三区无a| 日本一区二区三区爱爱视频| 国内揄拍国内精品少妇| 女人与牲口性恔配视频免费| 扒下语文老师的丝袜美腿| 少妇激情一区二区三区99| 麻豆精品久久久久久久99蜜桃 | 人妻熟女翘屁股中文字幕| 日本三级欧美三级人妇视频黑白配| 中文毛片无遮挡高潮| 操国产丝袜露脸在线播放| 永久亚洲成a人片777777| 同性男男黄g片免费网站| 亚洲色图在线视频免费观看| 亚洲一区二区三区国产| 朝鲜女人大白屁股ass| 国产美女一级做a爱视频| 国产一区二区三区护士| 美女露内裤扒开腿让男人桶无遮挡| 蜜臀av免费一区二区三区| 国产激情视频在线观看你懂的|