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

        ?

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

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

        聶慶鵬

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

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

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

        1 引言

        PHP(Personal Homepage:HyperText Preprocessor)是一種應(yīng)用十分廣泛的Web編程語言。該語言的一個(gè)重要特點(diǎn)是提供了大量擴(kuò)展函數(shù),幫助開發(fā)者完成常用操作。在Windows平臺(tái)上,這些函數(shù)是以若干個(gè)DLL(Dynamic Link Library,動(dòng)態(tài)鏈接庫)方式提供的。但這些函數(shù)仍不能完全滿足開發(fā)者的個(gè)性化需求。在很多特殊應(yīng)用場(chǎng)合下,需要自行開發(fā)動(dòng)態(tài)鏈接庫,對(duì)PHP進(jìn)行功能擴(kuò)展。但由于PHP的版本眾多,源代碼體系十分復(fù)雜,官方的技術(shù)支持資料又比較缺乏,讓很多開發(fā)者望而卻步。本文以Windows平臺(tái)為例,對(duì)PHP動(dòng)態(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動(dòng)態(tài)鏈接庫開發(fā)環(huán)境包括:(1)Visual Studio 2008;(2)PHP5.4.X Windows平臺(tái)二進(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版本對(duì)應(yīng)的deps包;(6)MSys1.0小型GUN環(huán)境工具[1]。

        2.2 重新編譯PHP

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

        (1)創(chuàng)建自定義目錄C:\php_studio\作為工作目錄,以下用%dir%表示本目錄;(2)解壓PHP SDK至 %dir%php_sdk,使用命令行窗口運(yùn)行VS2008安裝路徑下的vcvarsall.bat批處理文件。運(yùn)行后會(huì)輸出運(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)自動(dòng)創(chuàng)建了config.win32.h,這說明PHP編譯成功。

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

        PHP為開發(fā)者提供了動(dòng)態(tài)鏈接庫文件的框架,運(yùn)行ext_skel_ win32.php可以自動(dòng)創(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可以看到一個(gè)新建的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)目“活動(dò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目錄下會(huì)生成php_myFunc.dll,說明一個(gè)空白的動(dòng)態(tài)鏈接庫編譯完畢。

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

        上一步得到的動(dòng)態(tài)鏈接庫僅作為調(diào)試環(huán)境測(cè)試對(duì)象,并沒有包含用戶自定義函數(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動(dòng)態(tài)鏈接庫,將生成的php_myFunc.dll文件載入到PHP擴(kuò)展之中,則在PHP程序中可以直接通過以下方式調(diào)用自定義擴(kuò)展函數(shù)。

        <?php echo myfunc_test(); ?>

        3 結(jié)語

        本文綜合各方面研究資料,詳細(xì)梳理了Windows平臺(tái)下搭建PHP擴(kuò)展開發(fā)環(huán)境和進(jìn)行動(dòng)態(tài)鏈接庫開發(fā)的流程和步驟,尤其對(duì)其中的關(guān)鍵環(huán)節(jié)進(jìn)行了剖析,對(duì)于PHP擴(kuò)展開發(fā)人員具有很好的參考價(jià)值。由于PHP源代碼體系十分龐大,本文并未對(duì)自定義函數(shù)的實(shí)現(xiàn)部分進(jìn)行過多分析,如要進(jìn)行復(fù)雜的擴(kuò)展開發(fā),需要對(duì)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
        麻豆婷婷狠狠色18禁久久| 91热国内精品永久免费观看| 欧美精品高清在线xxxx| 精品一区二区三区不老少妇| 国产在线观看女主播户外| 人妻少妇不满足中文字幕| 丰满少妇被粗大猛烈进人高清| 伊人久久大香线蕉av网禁呦| 少妇人妻偷人精品视蜜桃| 爽爽影院免费观看| 午夜视频在线在免费| 女同久久精品国产99国产精品| 精品免费福利视频| 国产一级r片内射视频播放| 中文字幕乱码亚洲在线| 国产一区二区三区久久精品| 无码人妻av免费一区二区三区 | 久久丁香花综合狼人| 东京热日本道免费高清| 五月天中文字幕日韩在线| 少妇性bbb搡bbb爽爽爽| 人妻忍着娇喘被中进中出视频| 欧美老熟妇又粗又大| 无码国产精品一区二区免费式芒果| 少妇bbwbbw高潮| 一级一片内射视频网址| 久久亚洲中文字幕精品一区 | 一本久道高清视频在线观看| 风流老太婆大bbwbbwhd视频| 97人人模人人爽人人喊电影| 亚洲中文有码字幕青青| 久久成人永久免费播放| 冲田杏梨av天堂一区二区三区| 国产美腿丝袜一区二区| 少妇高潮太爽了在线视频| 明星性猛交ⅹxxx乱大交| 国产女人18一级毛片视频| 亚洲国产精品免费一区| 综合亚洲二区三区四区在线| 成年美女黄的视频网站| 久久久午夜精品福利内容|