Nginx Lua中的小陷阱
在日常的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,但是否是他的原创就不知道了。