亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件

Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件

熱門標(biāo)簽:陜西便宜電銷機(jī)器人軟件 外呼系統(tǒng)一天耗費(fèi)多少流量 免費(fèi)門店地圖標(biāo)注注冊(cè)入駐 電話機(jī)器人每天搜索多少次 海口智能語(yǔ)音電銷機(jī)器人好用嗎 衡水外呼線路解決 杞縣地圖標(biāo)注app 艾比利外呼系統(tǒng) 昆明電話外呼系統(tǒng)好么

最近在和智能硬件部門一起,做一個(gè)室內(nèi)定位的服務(wù),該服務(wù)根據(jù)手機(jī)端傳過(guò)來(lái)的beacon設(shè)備列表,根據(jù)一定的算法計(jì)算出具體的商場(chǎng),并將商場(chǎng)ID和beason設(shè)備列表作為參數(shù),調(diào)用.so文件中的計(jì)算方法,得出位置數(shù)據(jù)(坐標(biāo):x、y、z),返回給手機(jī)端。

因?yàn)榉?wù)對(duì)QPS要求比較高,并且都是純查詢操作,于是決定使用Nginx+lua+Redis的架構(gòu)(該架構(gòu)在公司內(nèi)部已成主流,比較成熟)。下面我將對(duì)lua調(diào)用.so文件的方式,做一下介紹。

lua調(diào)用.so文件,主要有兩種方式:

1.Lua直接調(diào)用動(dòng)態(tài)鏈接庫(kù),具體可參考 技術(shù)分享 。
2.使用C寫一個(gè)Wrapper。

鑒于第一種方式需要引入第三方工具包,并且效率不高,所以我們采用第二種方式來(lái)實(shí)現(xiàn)。具體實(shí)現(xiàn)過(guò)程如下:

1.編寫業(yè)務(wù)代碼,其中包括業(yè)務(wù)方法的封裝器。

  static int lua_Locate( lua_State* L )
  {
    long handle = lua_tonumber( L, 1 );
    const char* beacon_rssi_json = lua_tostring( L, 2 );

    vectorRSSI_INFO> rssi_info_vec;

    FingerprintLocationServer* p = (FingerprintLocationServer*)handle;

    ConvertJson2CppRSSI( beacon_rssi_json, rssi_info_vec );

    double x;
    double y;
    float floor;

    p->UpdateBeaconSignalGetResult( rssi_info_vec, x, y, floor );

    lua_pushnumber(L,x);
    lua_pushnumber(L,y);
    lua_pushnumber(L,floor);

    return 3;
  }

  static const struct luaL_Reg myLib[] =  
  { 
    {"lua_Locate", lua_Locate}, 
    {NULL, NULL}    //數(shù)組中最后一對(duì)必須是{NULL, NULL},用來(lái)表示結(jié)束   
  }; 

  int luaopen_mLualib(lua_State *L) 
  { 
    luaL_register(L, "FPCalc", myLib); 
    return 1;    // 把myLib表壓入了棧中,所以就需要返回1 
  }

其中,wapper函數(shù)的函數(shù)名有個(gè)命名規(guī)則,前綴為luaopen,后面就是lua中require的字符串,否則將會(huì)報(bào)類似于下面的異常:

lua entry thread aborted: runtime error: error loading module 'mLualib' from file '/var/wdd/wrs/webroot/intelligent_lua/mLualib.so':
  /var/wdd/wrs/webroot/intelligent_lua/mLualib.so: undefined symbol: _Z13lua_tolstringP9lua_StateiPm
stack traceback:
coroutine 0:
  [C]: in function 'require'
  /var/wdd/wrs/webroot/intelligent_lua/location.lua:18: in function...

另外,如果是.cpp文件,在luaopen_mylib一定要加 extern "C", 否則導(dǎo)出的函數(shù)會(huì)被重命名,切記切記! 關(guān)于extern "C",請(qǐng)參考 extern "C" 用法解析。

2.Nginx配置文件中指定so包所在的文件夾。

lua_package_cpath '/var/wdd/wrs/webroot/intelligent_lua/?.so;;';

注意,這里有很多種配置方式,只要讓lua能找到so文件即可,比如可以通過(guò)lua代碼package.cpath來(lái)引入(參閱下面代碼段)或者直接把so文件復(fù)制lua環(huán)境變量指定的目錄里等。
package.cpath = '/usr/local/lib/lua/5.1/?.so;'        --搜索so模塊

如果未指定cpath或者cpath中找不到so文件,系統(tǒng)會(huì)報(bào)如下異常:

no file './mLualib.lua'
  no file '/usr/local/openresty/luajit/share/luajit-2.1.0-beta1/mLualib.lua'
  no file '/usr/local/share/lua/5.1/mLualib.lua'
  no file '/usr/local/share/lua/5.1/mLualib/init.lua'
  no file '/usr/local/openresty/luajit/share/lua/5.1/mLualib.lua'
  no file '/usr/local/openresty/luajit/share/lua/5.1/mLualib/init.lua'
  no file '/usr/local/openresty/lualib/mLualib.so'
  no file './mLualib.so'
  no file '/usr/local/lib/lua/5.1/mLualib.so'
  no file '/usr/local/openresty/luajit/lib/lua/5.1/mLualib.so'
  no file '/usr/local/lib/lua/5.1/loadall.so'
  no file '/var/wdd/wrs/webroot/intelligent_lua/mLualib.so'

3.lua代碼中引入so包,并執(zhí)行調(diào)用。

local FPCalc = require "mLualib"

local x, y, floor = FPCalc.lua_Locate(c_addr, umm_json)

ngx.log(ngx.ERR, "lua_Locate:end:返回結(jié)果:", "x=" .. x, " y=" .. y, " floor=" .. floor)

以上就是lua調(diào)用.so包全部過(guò)程了。

實(shí)際壓測(cè)過(guò)程中,還發(fā)現(xiàn)了幾個(gè)問(wèn)題:

1.so包需要在運(yùn)行環(huán)境上編譯,不同的環(huán)境編譯的so包不一定通用。比如我在mac上編譯的so包,直接復(fù)制到生產(chǎn)環(huán)境(centos系統(tǒng))就不能使用,需要在生產(chǎn)環(huán)境重新編譯才可以。

2.編譯so包單進(jìn)程可以正常執(zhí)行,但是多進(jìn)程訪問(wèn)時(shí)異常,錯(cuò)誤信息如下(目前這個(gè)問(wèn)題還沒(méi)有解決)。

2017/05/03 16:52:41 [notice] 14355#0: signal 17 (SIGCHLD) received
2017/05/03 16:52:41 [alert] 14355#0: worker process 14361 exited on signal 11
2017/05/03 16:52:41 [notice] 14355#0: start worker process 14427
2017/05/03 16:52:41 [notice] 14355#0: signal 29 (SIGIO) received
2017/05/03 16:52:41 [notice] 14427#0: sched_setaffinity(0x00000008)

2017-05-04 終于找到原因:

問(wèn)題原因:進(jìn)程在訪問(wèn).so文件時(shí),需要調(diào)用.so中一個(gè)初始化方法。這個(gè)方法負(fù)責(zé)初始內(nèi)存等相關(guān)操作,每個(gè)進(jìn)程需要單獨(dú)調(diào)用(初始化)一次,而我所有進(jìn)程只調(diào)用(初始化)了一次,導(dǎo)致部分未初始化的進(jìn)程執(zhí)行代碼時(shí)異常。

解決方式:查到原因了,問(wèn)題就好解決了,每個(gè)進(jìn)程初始一次就好了。

您可能感興趣的文章:
  • nginx源碼分析configure腳本詳解
  • nginx服務(wù)器通過(guò)配置來(lái)解決API的跨域問(wèn)題
  • 詳解nginx服務(wù)器http重定向到https的正確寫法
  • 詳解Linux中Nginx反向代理下的tomcat集群
  • CentOS 7中利用yum安裝Nginx的方法教程
  • nginx超時(shí)設(shè)置詳細(xì)介紹
  • Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)

標(biāo)簽:海口 泰安 西寧 宿遷 昌都 臨滄 南京 營(yíng)口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件》,本文關(guān)鍵詞  Nginx+lua,實(shí)現(xiàn),調(diào)用,.so,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩男人天堂| 午夜欧美成人香蕉剧场| 成人a级高清视频在线观看| 欧美激情一区二区三区视频高清| 精品国产三级a| 亚洲天堂在线播放| 999久久66久6只有精品| 二级片在线观看| 久草免费在线观看| 国产不卡精品一区二区三区| 日韩av成人| 日本免费区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美国产日韩在线| 99色播| 青青久久国产成人免费网站| 精品国产一区二区三区免费 | 欧美另类videosbestsex视频| 精品在线观看国产| 日本特黄一级| 精品国产一区二区三区久久久狼| 精品视频在线看| 99热视热频这里只有精品| 四虎久久精品国产| 黄视频网站免费观看| 午夜激情视频在线播放| 欧美爱色| 午夜精品国产自在现线拍| 天天做日日干| 国产国产人免费视频成69堂| 欧美另类videosbestsex高清| 美女免费毛片| 亚洲精品中文一区不卡| 久久精品大片| 午夜激情视频在线播放| 一级毛片视频播放| 国产一级强片在线观看| 欧美激情一区二区三区视频 | 亚洲不卡一区二区三区在线| 欧美激情一区二区三区在线播放| 亚洲第一页色| 精品视频免费观看| 91麻豆国产| 久久久成人网| 日韩在线观看免费| 国产精品免费久久| 免费毛片基地| 午夜在线亚洲| 国产视频一区在线| 99色视频在线观看| 国产国产人免费视频成69堂| 日韩av片免费播放| 九九九国产| 青青久久网| 精品久久久久久影院免费| 欧美日本免费| 91麻豆精品国产自产在线| 国产视频在线免费观看| 九九精品久久久久久久久| 日本特黄一级| 国产网站免费观看| 国产成人啪精品| 国产国产人免费视频成69堂| 精品国产三级a∨在线观看| 国产伦理精品| 国产一区二区精品久久91| 国产一区二区精品久久| 国产欧美精品午夜在线播放| 午夜在线影院| 精品国产一区二区三区久| 国产成人精品综合| 国产原创中文字幕| 欧美大片a一级毛片视频| a级黄色毛片免费播放视频| 国产不卡在线观看视频| 国产综合91天堂亚洲国产| 九九久久99| 国产亚洲精品成人a在线| 欧美α片无限看在线观看免费| 国产一区二区精品尤物| 亚洲第一视频在线播放| 日本特黄特黄aaaaa大片| 91麻豆精品国产综合久久久| 日本伦理黄色大片在线观看网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美一区二区三区在线观看| 国产91精品一区| 国产不卡在线看| 一a一级片| 精品在线免费播放| 国产国语在线播放视频| 香蕉视频久久| 日本伦理黄色大片在线观看网站| 黄色福利片| 99久久网站| 国产a视频精品免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产网站在线| 亚洲精品中文一区不卡| 日本免费乱理伦片在线观看2018| 高清一级毛片一本到免费观看| 成人影院一区二区三区| 欧美一级视频免费| 成人a大片在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩在线观看免费| 国产麻豆精品视频| 久久精品店| 精品国产香蕉在线播出| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久99这里只有精品国产| 成人在免费观看视频国产| 国产伦精品一区三区视频| 91麻豆高清国产在线播放| 国产不卡在线看| 日本特黄特黄aaaaa大片| 尤物视频网站在线| 色综合久久天天综合绕观看| 一本高清在线| 国产91丝袜高跟系列| 香蕉视频久久| 国产麻豆精品| 成人a大片在线观看| 欧美大片一区| 国产91精品一区| 999精品视频在线| 国产欧美精品| 99久久精品国产免费| 亚洲第一视频在线播放| 久久国产精品自线拍免费| 日韩一级黄色大片| 亚欧成人乱码一区二区| 久久久久久久免费视频| 国产网站在线| 精品国产一区二区三区国产馆| 高清一级片| 日韩男人天堂| 91麻豆精品国产自产在线观看一区| 成人高清视频在线观看| 99热精品一区| 国产a视频精品免费观看| 黄色福利| 午夜激情视频在线观看| 亚洲精品影院| 久久福利影视| 九九干| 成人免费福利片在线观看| 亚洲www美色| 成人av在线播放| 国产福利免费观看| 亚洲第一色在线| 国产一区二区精品久久91| 九九热国产视频| 精品视频在线观看一区二区| 国产一区二区精品尤物| 国产成人精品综合在线| 高清一级毛片一本到免费观看| 色综合久久天天综线观看| 亚洲wwwwww| 99久久精品国产高清一区二区| 日韩欧美一二三区| 免费国产在线观看不卡| 日韩在线观看视频免费| 精品国产一区二区三区国产馆| 欧美18性精品| 欧美另类videosbestsex高清| 四虎影视久久久免费| 高清一级做a爱过程不卡视频| 黄视频网站免费看| 久久久久久久网| 青青青草影院| 韩国三级香港三级日本三级la | 欧美激情伊人| 午夜欧美成人香蕉剧场| 日韩男人天堂| 欧美国产日韩久久久| 日韩在线观看视频网站| 国产网站免费观看| 精品国产一区二区三区精东影业| 九九精品影院| 天天色成人网| 亚洲 男人 天堂| 久久久久久久男人的天堂| 欧美日本国产| 国产成+人+综合+亚洲不卡| 91麻豆国产| 欧美激情伊人| 国产一区二区精品在线观看| 四虎影视久久| 日本免费区| 亚欧成人乱码一区二区| 国产国产人免费视频成69堂| 日本特黄特黄aaaaa大片 | 亚飞与亚基在线观看| 美女被草网站| 欧美另类videosbestsex视频| 韩国毛片| 成人a级高清视频在线观看| 国产一区二区精品久久| 欧美a级片视频|