Hello!
2013/7/28 stone green:
> 要咨询的问题是在守护程序上使用openretsy能不能集成libcurl库,下载资源的时候将使用lua-curl下载,第二个问题当用户开始一个下载任务后,服务器会不会对其他的请求无法响应?比如说这个时候用户想查看一下任务下载的进度,任务状态,或者暂停,删除一个下载任务,或者说如何考虑才能避免这样的情况,期待你的答复,谢谢
>
在 nginx 中使用 libcurl 库必会阻塞 nginx worker 进程,所以应当绝对避免。
推荐使用下列两种方式之一,都是 100% 非阻塞的:
1. 基于 ngx_lua 的 cosocket API 直接进行 HTTP 协议的通信:
http://wiki.nginx.org/HttpLuaModule#ngx.socket.tcp
有一些使用此方式实现的第三方 lua-resty-http* 库在互联网上可供参考,比如
https://github.com/bakins/lua-resty-http-simple
2. 基于 ngx_lua 的 ngx.location.capture 发起子请求来复用 nginx 标准的 ngx_proxy 模块。见
http://wiki.nginx.org/HttpLuaModule#ngx.location.capture
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
另外,建议加入 openresty 中文邮件列表,并总是在那里交流这样的问题(除非涉及敏感信息):
https://groups.google.com/group/openresty
同时抄送给此列表。
Best regards,
-agentzh