


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文檔為網(wǎng)上收集,若侵犯了您的利益,請(qǐng)聯(lián)系(qq :253169161),我將立即核對(duì)刪除。mysql udf 接口編程示例/*首先參考mysql 官方提供的udf_example.c 文件,將需要include 的代碼復(fù)制過(guò)來(lái),然后就可以根據(jù)需要編寫(xiě)自己的函數(shù)了。我這里給出的示例是一個(gè)向指定ip 和端口, post 數(shù)據(jù)的例子,然后用網(wǎng)絡(luò)調(diào)試助手進(jìn)行測(cè)試。首先根據(jù)示例中的指示,需要建立3 個(gè)函數(shù)分別是初始化函數(shù),執(zhí)行函數(shù),還有反初始化函數(shù)。首先對(duì)這三個(gè)函數(shù)進(jìn)行聲明。如下:*/ my_boolhttp_post_init(udf_init *initid, udf_args *args, ch
2、ar *message);/args是 sql 語(yǔ)句傳回的參數(shù),message是返回出錯(cuò)信息使用這些都是規(guī)定好的。longlonghttp_post(udf_init *initid, udf_args *args, char *is_null,char *error);/主函數(shù)體voidhttp_post_deinit(udf_init *initid);/反初始化函數(shù)體/*其中 http_post_init 需要返回my_bool 型。這個(gè)函數(shù)目的是給用戶提供一個(gè)方式,檢驗(yàn)由mysql 參數(shù)傳進(jìn)來(lái)的數(shù)據(jù)是否正確,如果正確則對(duì)其進(jìn)行主函數(shù)執(zhí)行,否則程序結(jié)束。另外 mysqludf 中暫時(shí)不支
3、持在主函數(shù)體內(nèi)申請(qǐng)內(nèi)存,所以如果有要申請(qǐng)內(nèi)存的操作,需要放在初始化過(guò)程中。但請(qǐng)注意,在udf 中好像對(duì)于申請(qǐng)和釋放內(nèi)存不是線程安全的,我的程序在多線程運(yùn)行狀態(tài)下,會(huì)發(fā)生 free 出錯(cuò)的情況,應(yīng)該是多次free 出錯(cuò),但我在程序中只free 了一次。所以建議大家不要使用,如果需要空間較大,就建立一個(gè)大一點(diǎn)的靜態(tài)空間吧(數(shù)組 )。另外申請(qǐng)空間時(shí)需要使用mysqludf 提供的變量名,initid-ptr ,代碼示例如下,然后在主程序中直接使用initid-ptr ,最后在http_post_deinit中進(jìn)行釋放。具體看udf_example.c*/ if(!(initid-ptr=(char*
4、) malloc(100) ) ) strcpy(message,couldnt allocate memory 100); return1; */ return0; /*我的代碼最終沒(méi)有采用事先分配內(nèi)存的方式,而是準(zhǔn)備在主函數(shù)中申請(qǐng)空間。這里需要注意,成功一定要返回0,這也是udf 接口規(guī)定的,如果mysql 發(fā)現(xiàn)返回值是1,程序立刻結(jié)束。*/ my_boolhttp_post_init(udf_init *initid, udf_args *args, char *message) if(args-arg_count args1); serv_addr.sin_addr.s_addr=in
5、et_addr(args-args0); bzero(&(serv_addr.sin_zero),8); charsenddata128000=0; if(args-arg_count = 4 & (args-args3!=null) ) intargsnum=strlen(args-args3); sprintf(senddata,post /?%s http/1.1rncontent-length:%drnrn%s,args-args2,argsnum,args-args3); else sprintf(senddata,post /?%s http/1.1rn,args-
6、args2); if(sockfd = socket(af_inet,sock_stream,0) = -1) close(sockfd); return 1; /exit(); if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr) = -1) close(sockfd); return1; 本文檔為網(wǎng)上收集,若侵犯了您的利益,請(qǐng)聯(lián)系(qq :253169161),我將立即核對(duì)刪除。/exit(); if(numbytes = send(sockfd,senddata,strlen(senddata),0)
7、= -1) close(sockfd); return1; / exit(); close(sockfd); return0; /由于我沒(méi)有申請(qǐng)空間(melloc) ,所以我的反初始化函數(shù)為空voidhttp_post_deinit(udf_init *initid) /將程序保存為http_post.c 編譯如下 (請(qǐng)根據(jù)機(jī)器上的mysql 路徑進(jìn)行調(diào)整 ):gcc-wall-i/usr/local/webserver/mysql/include/mysql/-sharedhttp_post.c-ohttp_post.so-fpic/使用mysql 提供的頭文件生成動(dòng)態(tài)鏈接庫(kù)cp-fhttp
8、_post.so/usr/local/webserver/mysql/lib/mysql/plugin/http_post.so/將生成的.so 文件放入 mysql 的 plugin 文件夾下/進(jìn)入 mysql 對(duì)動(dòng)態(tài)鏈接庫(kù)中的函數(shù)進(jìn)行安裝cd/usr/local/webserver/mysql/bin/mysql ./mysql /在 mysql 命令行下輸入如下命令:mysqldropfunctionifexistshttp_post; /其目的是如果系統(tǒng)內(nèi)安裝了同名函數(shù)先進(jìn)性drop。mysqlcreatefunctionhttp_postreturnsintegersonamehttp_post.so; /生成 http_post 函數(shù),并指明調(diào)用來(lái)源是http_post.so。/最后調(diào)用函數(shù),其目的是向指定ip 和端口發(fā)送post 數(shù)據(jù)。調(diào)用前先打開(kāi)指定ip 主機(jī)上的網(wǎng)絡(luò)調(diào)試助手,并監(jiān)聽(tīng)3888 端口。mysq
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安徽工貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)完美版
- 2025年成都文理學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)附答案
- 會(huì)計(jì)學(xué)測(cè)試題及答案
- 2025年保定電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2025年郴州思科職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及答案一套
- 2025年安徽廣播影視職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)一套
- 突破中職電子商務(wù)教師資格證的試題及答案
- 如何在全媒體中打造主題性活動(dòng)試題及答案
- 2025年濱州科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)1套
- 電子商務(wù)教學(xué)改革方向試題及答案
- 實(shí)驗(yàn)05 探究平面鏡成像的特點(diǎn)-中考物理實(shí)驗(yàn)精練通關(guān)(解析版)
- 2025年礦燈和自救器管理工職業(yè)技能鑒定參考試指導(dǎo)題庫(kù)500題(含答案)
- 2025年網(wǎng)格員考試題及答案湖北
- 2025年博士思政面試題及答案
- 2025年上半年夏秋季山東省菏澤單縣事業(yè)單位招聘征集普通高等院校本科畢業(yè)生29人入伍重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2025年安徽汽車(chē)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)含答案
- 小學(xué)生羽毛球課課件圖片
- 2024年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年哈爾濱應(yīng)用職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 建筑消防設(shè)施維修保養(yǎng)采購(gòu)申請(qǐng)
- 2025屆高考英語(yǔ)復(fù)習(xí)讀后續(xù)寫(xiě)練習(xí)+男孩與愛(ài)犬:失而復(fù)得的溫暖+課件
評(píng)論
0/150
提交評(píng)論