Nginx Lua中的小陷阱

在 一 11 三月 2019 发布于 TECH SKILLS 分类 • 1 min read

在日常的lua脚本调试中,我们通常会用ngx.say或者ngx.print来打印信息,但是要注意了,当你在ngx.redirect前面使用这两个方法时,就会报错哦

lua entry thread aborted: runtime error: attempt to call ngx.redirect after sending out the headers

但是用ngx.log方法一般是没有问题的


另外这里再记录一下,lua中的split实现方法,下面这个方法够简洁

string.split = function(s, p)

    local rt= {}
    string.gsub(s, '[^'..p..']+', function(w) table.insert(rt, w) end )
    return rt

end

使用示例:

local str = 'abc,123,hello,ok'

local list = string.split(str, ',')

for _, s in ipairs(list) do

    print(s)

end

运行结果如下:

abc

123

hello

ok

另外一个示例:

local str = 'abc \n123 \t hello ok'

local list = string.split(str, '%s')

for _, s in ipairs(list) do

    print(s)

end

结果:

abc

123

hello

ok

以上方法来自于:https://blog.51cto.com/zhaiku/1163077,但是否是他的原创就不知道了。