Hello!
2012/8/15 307413083 wrote:
> 我现在使用OpenResty,想使用lua 输出文件,我没找到相关的说明和实例,能不能帮忙指点一下或者给我一个例子。
> 非常感谢!
>
你的问题有歧义,究竟是用 Lua 写文件并保存到服务器的本地文件系统呢,还是用 Lua 读取本地文件再输出给 HTTP 客户端呢?
如果你说的是前者,直接使用 Lua 标准的 io 模块就可以了,但要小心写大文件时的阻塞效应。关于 io 等标准 Lua 库的细节可以参见
Lua 5.1 的用户手册:http://www.lua.org/manual/5.1/manual.html#5.7
如果是后者,一般有两种做法:
1. 借助 nginx 自己的静态文件服务来输出,只需要在 Lua 里使用 ngx.exec 等接口发起“内部跳转”到配置了静态服务模块的
location 即可。
2. 在 Lua 中使用标准的 io 模块分块读取文件,然后使用 ngx.print 和 ngx.flush(true) 把块以非缓冲方式流式输出。
同时抄送给 openresty 邮件组:https://groups.google.com/group/openresty
也欢迎你加入这个邮件组并在那里讨论这样的问题 :)
Best regards,
-agentzh