nginx lua与php-fpm的结合

478 views
Skip to first unread message

许胜斌

unread,
Jul 3, 2015, 6:07:45 AM7/3/15
to open...@googlegroups.com
hi,yichun zhang:
   一直很喜欢ngx lua,有个问题,请教下你:
网站项目用的是php语言。后台接口由另外一个项目的java接口提供。由于网站访问量比较大,所以,希望把调用java接口的工作,由lua来做。我设想的大致流程就是:

请求---- nginx ---- lua调用api ---返回数据----> 给php, 然后php拿到数据之后,展示html页面。

现在的困惑是:如果把lua请求到的数据,如data,传递给php。我设想的伪代码大致如下:
location get_data{
      content_by_lua_file 'get_data.lua'
     接下来请求到达php,php中可以获取lua中的变量  //这里我不知道如何处理。
}

目前我知道的一种方式:
location ~ .*\.php {
        lua_code_cache off;
        set $login_user_info "";
        access_by_lua '
                ngx.var.login_user_info =  get_request(url);
            end
        ';
fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param           LOGIN_USER_INFO "$login_user_info";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        #做什么用
      }

但是,我觉得,这种方式,会对所以的请求对执行lua代码,感觉不够优雅。  

因此,不知道是否可以类似

location get_data{
      content_by_lua_file 'get_data.lua'
     接下来请求到达php,php中可以获取lua中的变量  //这里我不知道如何处理。
}
这种方式。实现lua和php的合作。

期待你的回复,谢谢你。

Jakin

unread,
Jul 3, 2015, 6:13:38 AM7/3/15
to openresty
有个疑问为什么不直接php 调用java 就可以了,嵌套多lua 有意义吗?


------------------ 原始邮件 ------------------
发件人: "许胜斌";<xushen...@gmail.com>;
发送时间: 2015年7月3日(星期五) 晚上6:07
收件人: "openresty"<open...@googlegroups.com>;
主题: [openresty] nginx lua与php-fpm的结合
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

许胜斌

unread,
Jul 3, 2015, 6:18:41 AM7/3/15
to open...@googlegroups.com
为了性能考虑啊。如果php去调用java接口,那么fpm进程占用时间必然过长。搞并发下,估计fpm就挂了。

在 2015年7月3日星期五 UTC+8下午6:07:45,许胜斌写道:

许胜斌

unread,
Jul 3, 2015, 6:19:36 AM7/3/15
to open...@googlegroups.com, 8980...@qq.com
为了性能考虑。如果php去调用java接口,那么fpm进程占用时间必然过长。搞并发下,估计fpm就挂了。所以想把这部分工作交由lua处理。


在 2015年7月3日星期五 UTC+8下午6:13:38,Jakin写道:

瞿秋丰

unread,
Jul 3, 2015, 11:55:43 AM7/3/15
to open...@googlegroups.com, 8980...@qq.com
php 可以通过 yar  并行请求 ngx_lua 获取数据
我之前也有楼主一样的问题  其实可以用 ngx_lua 取得数据  通过lua模板引擎渲染就可以了 
没错  可以替换掉php
当然,整体还是没有php方便

在 2015年7月3日星期五 UTC+8下午6:19:36,许胜斌写道:

许胜斌

unread,
Jul 3, 2015, 9:40:12 PM7/3/15
to open...@googlegroups.com, 8980...@qq.com
谢啦。
1、安装yar,不太现实啊。对于一个公司来说。那些人不会让你乱装的。
2、lua模块引擎,确实不如php。

秋叶

unread,
Jul 3, 2015, 9:49:06 PM7/3/15
to open...@googlegroups.com, 8980...@qq.com
其实我看来都是一样的,如果java慢的话lua接口一样会慢,你需要考虑的不是转嫁给ngx_lua去做,而是如何提高java qps 以及在php并行处理http接口。
php并行处理有纯php的实现(不需要安装,本人在生产环境用了很久,大大的提高了整体php qps):http://guzzle.readthedocs.org/en/latest/


在 2015年7月3日星期五 UTC+8下午6:19:36,许胜斌写道:
为了性能考虑。如果php去调用java接口,那么fpm进程占用时间必然过长。搞并发下,估计fpm就挂了。所以想把这部分工作交由lua处理。
Reply all
Reply to author
Forward
0 new messages