使用 lua-resty-mysql的时候,能不能把连接mysql的代码独立出来,直接在其他需要查询sql的文件里包含,怎么样传递mysql的link?有没有示例代码?谢谢
On Sunday, December 16, 2012 2:48:39 AM UTC+8, agentzh wrote:
Hello!On Sat, Dec 15, 2012 at 9:24 AM, Andy Chen wrote:
> 请问各位大虾,现在nginx有各种lua编写的模块,比如mysql,memcache,redis等,能
> 不能用lua编写动态网站,完全代替php,如果能,这样的网站的性能是不是比php高?
是的。一般在延时和并发能力上都会有非常明显的提升(如果后端不是特别明显的瓶颈的话)。
例如淘宝量子统计在 2011 年初把原有的 PHP 实现改写为 Nginx+Lua 之后,真实的业务接口,在改写前后的延时变化:
http://agentzh.org/misc/nginx/perf_with_mysqlcache.html
这个比较其实使用的是标准 Lua 5.1 解释器。后来换成 LuaJIT 2.0.0 beta6 之后,延时又有进一步的降低:
http://agentzh.org/misc/nginx/2011-03-10-core_lua51_vs_luajit20.html
由于 Nginx + Lua 是 100% 非阻塞的通信模型,在并发和吞吐量上的提升相比延时更为明显,因为当时后端有很多高配的 MySQL
节点,而前端只有二三台低配机器。
注意上面给出的是 2010 年初的结果,在后面的近三年时间里无论是 LuaJIT 2.0 还是 ngx_lua
模块在性能上又有了不小的进步。即使是今天也仍有很大的优化空间 :)
再比如印度的一家创业网站从 PHP 迁移到 Nginx+Lua 之后的性能变化:
http://visualwebsiteoptimizer.com/split-testing-blog/geo-distributed-architecture/
> 有没有其他模块能更方便的来编写?
>
可以参考现有的 lua-resty-* 库,比如 lua-resty-mysql, lua-resty-redis,
lua-resty-memcached 之类。
Regards,
-agentzh