
lua
文章平均质量分 53
xiejunna
软件开发
展开
-
ngx_lua常用变量参数
Ngx指令lua_code_cache on | off; 作用:打开或关闭 Lua 代码缓存,影响以下指令: set_by_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 及强制加载或者reload Lua 模块等.缓存开启时修改LUA代码需要重启nginx,不开启时则不用。开发阶段一般关闭缓存。转载 2016-12-03 14:59:47 · 13510 阅读 · 0 评论 -
lua获取get请求中的参数
-- 获取GET请求参数local request_args_tab = ngx.req.get_uri_args()for k, v in pairs(request_args_tab) do print(k..":"..v)end原创 2017-07-14 10:33:36 · 4971 阅读 · 0 评论 -
lua url转译
ngx.escape_uri(str) url转义ngx.unescape_uri(str) url转义还原ngx.encode_args() 把lua table编码为查询参数字符串ngx.decode_args(str,max_args?) 把查询字符串转为lua table原创 2017-07-20 14:10:39 · 3359 阅读 · 0 评论 -
lua复制table
--工具方法--src资源字符串--dest复制出来的目标字符串function _M.tablecopy(src, dest) for k, v in pairs(src) do if type(v) == "table" then dest[k] = {} _M.tablecopy(v, dest[k]) else dest[k] =原创 2017-07-17 10:40:21 · 1539 阅读 · 0 评论 -
ngx.print与ngx.say
--输出响应内容体;(内容体结束后没有换行符;)ngx.print("aaaaaaaaaaaaaa")--输出响应内容体;(内容体结束后,输出一个换行符;)ngx.say("aaaaaaaaaaaaaaa")原创 2017-07-19 16:40:20 · 14751 阅读 · 0 评论 -
lua拆分字符串not enough memory
--调用方法:--local str= "-6ciNeXFTlqy5Dcld8UPmsrcieJkmFJO4zDcaOP56YY$-$OPENTM207374570"--local tab = str_split(str, "$-$")--打印:["-6ciNeXFTlqy5Dcld8UPmsrcieJkmFJO4zDcaOP56YY","OPENTM207374570"]--------原创 2017-07-24 17:30:25 · 4029 阅读 · 0 评论 -
lua中的http与https请求
OpenResty默认没有提供Http客户端,需要使用第三方提供; 此链接下载需要的资源:https://github.com/pintsized/lua-resty-http http.lua http_headers.lua 这两个文件拷贝到openresty安装的lua的lib库。local zhttp = require(“resty.http”)httpfun原创 2016-12-03 16:09:25 · 33974 阅读 · 4 评论 -
lua pcall error
function main() --抛出异常 err.throw({retcode = "E001",retmsg = "出错了!!!",})end--捕获异常local ok, result = pcall(main)if not ok then log(m_uuid,"throw err:"..tostring(result) )end原创 2017-11-15 09:31:14 · 452 阅读 · 0 评论 -
lua去掉字符串中的空格
-- print(string.gsub(" b c a ", "^%s*(.-)%s*$", "%1"))-- b c a 1 --后面的1表示替代的次数-- print((string.gsub(" b c a ", "^%s*(.-)%s*$", "%1")))-- b c a --加一层括号,只返回格式化后的字符串-- 这里要加括号function trim(str) re原创 2017-11-14 20:23:51 · 13773 阅读 · 0 评论 -
通过lua脚本识别微信,支付宝,龙支付
需求:微信,支付宝,龙支付的APP中的扫一扫扫描二维码,根据不同的浏览器,调起不同的支付。这里要通过lua脚本识别扫码之后支付类型。 lua脚本判断支付类型,要知道各种支付的标志性字段,比如微信,js可以获取请求的用户代理头,包含”MicroMessenger”字段,可以判断是微信中的扫一扫,进行扫描的。如果是支付宝==>Alipay,建行龙支付==>CCBWebView(当然这里建行的js判断原创 2017-10-16 09:51:57 · 3182 阅读 · 0 评论 -
lua sha1封装实现
–先调用nginx模块中封装好的函数ngx.sha1_bin() 获取到的是一个二进制的sha1结果 –再把二进制的sha1结果转成16进账,转小写,即可module(..., package.seeall)--bcd 展开 function to_hex(str) return ({str:gsub(".", function(c) return string.format("%0原创 2018-03-09 10:37:09 · 4618 阅读 · 0 评论 -
lua sha256算法函数封装
module(..., package.seeall)--sha256算法function sha256(str) local resty_sha256 = require "resty.sha256" local restystr= require "resty.string" local sha256 = resty_sha256:new() sha256:up原创 2018-03-09 10:44:29 · 7448 阅读 · 1 评论 -
lua中判断redis返回null
今天遇到一个麻烦的问题,查询redis时候,查到数据的时候正常返回,查询不到数据时,返回了null,然而在lua中,常见的nil,但不常见null,这时候lua中对redis返回的null如何做判断呢? 于是各种尝试。 这是经过公司基础库封装的结果,并非官方的返回,redis返回结果如下:{"retmsg":"","result":null,"retcode":"0000"}开始尝试了...原创 2018-06-13 11:07:14 · 9475 阅读 · 0 评论 -
nginx: [alert] kill(11, 1) failed (3: No such process)
在重启nginx容器后,报错:nginx: [alert] kill(11, 1) failed (3: No such process)原因:启动nginx服务未启动成功,可以重新启动启动nginx服务,或者:重新加载nginx配置。重新加载nginx配置方法: whereis nginx #定位nginx文件位置 /usr/local/nginx/nginx -c /usr...原创 2018-09-25 15:48:48 · 12640 阅读 · 1 评论 -
lua entry thread aborted: runtime error: attempt to yield across C-call boundary stack traceback
一个lua脚本里引入其它脚本文件一直报错:lua entry thread aborted: runtime error: attempt to yield across C-call boundarystack traceback:coroutine 0: [C]: in function 'require'错误位置定位到require另外一个lua脚本的位置。很认真的...原创 2018-09-25 15:56:59 · 6241 阅读 · 0 评论 -
lua获取请求的请求方法(get,post)
-- 获取请求方法 GET、POST local request_method = ngx.var.request_methodprint(request_method)原创 2017-07-14 10:31:22 · 11336 阅读 · 0 评论 -
lua(nginx) 获取请求的请求头
local headers = ngx.req.get_headers() log("headers=="..cjson.encode(headers))原创 2017-07-10 16:37:01 · 13091 阅读 · 0 评论 -
lua获取post请求的参数
ngx.req.read_body()--获取post请求的参数local post_args_tab = ngx.req.get_post_args()for k, v in pairs(post_args_tab) do print(k..":"..v)end原创 2017-07-14 10:23:47 · 4835 阅读 · 2 评论 -
lua for遍历
--pairs data={key1="a",key2="b",key3="c"}for k,v in pairs(data) doprint (k,v)enda = {"one", "two", "three"}for i, v in pairs(a) do print(i, v)end--ipairsa = {"one", "two", "three"}for i,原创 2016-12-03 17:27:24 · 734 阅读 · 0 评论 -
ngx映射到lua模块函数变量一览
ngx.arg[1] 脚本参数ngx.var['arg_a'] 取queryString的参数a #/nginx_var?a=hello,worldngx.say(...) 依次输出参数,带换行ngx.print(...) 格式化输出,不带换行ngx.var.name转载 2016-12-05 14:45:42 · 5446 阅读 · 1 评论 -
Lua中的基本函数库
collectgarbage (opt [, arg]) 功能:是垃圾收集器的通用接口,用于操作垃圾收集器 参数: opt:操作方法标志 “Stop”: 停止垃圾收集器 “Restart”: 重启垃圾收集器 “Collect”: 执行一次全垃圾收集循环 “Count”: 返回当前Lua中使用的内存量(以KB为单位) “Step”: 单步执行一个垃圾收集. 步长 “Size” 由参数a转载 2016-12-05 16:04:01 · 11447 阅读 · 0 评论 -
lua 正则匹配
在OpenResty中,同时存在两套正则表达式规范: Lua 语言的规范和Nginx的规范,即使您对 Lua 语言中的规范非常熟悉,我们仍不建议使用 Lua 中的正则表达式。一是因为 Lua 中正则表达式的性能并不如 Nginx 中的正则表达式优秀;二是 Lua 中的正则表达式并不符合 POSIX 规范,而 Nginx 中实现的是标准的 POSIX 规范,后者明显更具备通用性。Lua 中的正则表达式转载 2016-12-05 16:52:26 · 6403 阅读 · 1 评论 -
lua io.open(filename [, mode])
io.open (filename [, mode]) 功能:按指定的模式打开一个文件,成功则返回文件句柄,失败则返回nil+错误信息 mode: "r": 读模式 (默认); "w": 写模式; "a": 添加模式; "r+": 更新模式,所有之前的数据将被保存 "w+": 更新模式,所有之前的数据将被清除 "a+": 添加更新模式,所有之前的数据将被保存,只允许在文件尾进行添加原创 2016-12-05 18:34:35 · 4107 阅读 · 0 评论 -
lua 常用函数
•assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 •collectgarbage() - 垃圾收集器. (新增于1.10.1) •date(format, time) - 返回当前用户机器上的时间. •error("error message",level) - 发生错误时,输出一条定义的错误信转载 2016-12-06 09:22:30 · 547 阅读 · 0 评论 -
lua 运算符优先级
运算符优先级从高到低的顺序:^not - (unary)* /+ -..< > <= >= ~= ==andor除了^和..外所有的二元运算符都是左连接的。原创 2016-12-06 15:15:07 · 1968 阅读 · 1 评论 -
lua cjson应用
Lua利用cjson读写json解析JSONlocal cjson = require "cjson"local sampleJson = [[{"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}]];--解析json字符串local data = cjson.decode(sampleJson);--转载 2017-04-07 10:23:05 · 2751 阅读 · 0 评论 -
nginx 用lua中获取url路径相关信息
1.获取当前请求的url相关信息function test()-- 这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。local request_uri = ngx.var.request_uri log(tools.gbk_to_u8("获取当前请求的url==") .. tools.u8_to_gbk(cjson.encode(request_ur原创 2017-05-11 17:41:13 · 31272 阅读 · 1 评论 -
lua table判空
openrest最佳实践推荐的方法:------------------------------------------- @description 对table判空-- @param t 要验证的table-- @return true table是空 falsetable 不是空-----------------------------------------function is原创 2017-05-24 09:24:16 · 745 阅读 · 0 评论 -
lua中判断table中是否包含某个值
步骤: 1.遍历table 2.判断table中是否包含某个值function is_include(value, tab) for k,v in ipairs(tbl) do if v == value then return true end end return falseend原创 2017-05-15 15:37:09 · 30943 阅读 · 0 评论 -
Nginx服务器中使用lua获取get或post参数
--Nginx服务器中使用lua获取get或post参数local request_method = ngx.var.request_methodlocal args = nillocal param = nillocal param2 = nil--获取参数的值if "GET" == request_method then args = ngx.req.get_uri_args转载 2017-04-25 14:14:00 · 24092 阅读 · 0 评论 -
lua中的package.path和package.cpath
一. package.path用于搜索自己写的库文件或者第三方的库文件--搜索指定路径下,以 .lua结尾的文件package.path = "../h/?.lua;../ybslib/src/?.lua;"..package.path二. package.cpath用于搜索自己写的so库文件或者第三方的so库文件--搜索指定路径下,以.so结尾的文件package.cpath = "..原创 2017-06-06 09:46:54 · 17864 阅读 · 0 评论 -
lua ngx模块
lua ngx模块提供的指令和API: 转载:http://www.cnblogs.com/wangxusummer/p/4309007.html指令名称 说明lua_use_default_type 是否使用default_type指令定义的Content-Type默认值lua_code_cache *_by_lua_file文件是否cach转载 2017-06-07 19:26:56 · 2966 阅读 · 0 评论 -
lua判断字符串包含另一个字符串
local headers = ngx.req.get_headers() log("headers=="..cjson.encode(headers))原创 2017-07-12 15:41:58 · 40279 阅读 · 0 评论 -
linux ln
linux创建软连接(相当于windows的快捷方式)ln -s [源文件或目录–真实路径] [目标文件或目录–快捷方式]当前路径创建test 引向/var/www/test文件夹ln –s /var/www/test testln -s /home/yy/xxx/h5_d/h5/temp(真实路径) lntemp(软链接名称--快捷方式)rm –rf 软链接名称(请注意...原创 2018-09-25 16:53:37 · 1824 阅读 · 0 评论