首页 新闻 搜索 专区 学院

nginx中大数据的处理问题

0
悬赏园豆:100 [已解决问题] 解决于 2015-06-11 20:49

在Nginx开发中的问题,当有客户端请求时,发送相应的请求信息,服务器处理请求发送数据给客户端。有个问题就是当客户端要求的数据比较大的时候,我在ngx_static_module.c中加入一个while循环,循环发送数据(调用ngx_http_output_filter),因为对框架不是很了解,所以才用这种方法,这样有一个问题就是容易造成Nginx的进程阻塞,请问您有什么方法解决这个问题,不用这种方法,或者有什么方式解决这个问题。

问题补充:

我这里补充一些,可能我说的不是很明白,while循环是这样的

while(len < toltal_length)

{

      ngx.callback.read(...)//回调函数,从内存中读取数据;

      .....

     out.buf = b;

   ngx_http_output_filter(r,&out);

  len += readlen;  //readlen 指回调函数读取的长度 

//这样循环容易进程阻塞,移植在循环中,

}

czj9001的主页 czj9001 | 初学一级 | 园豆:4
提问于:2015-04-17 19:07
< >
分享
最佳答案
0

while循环的条件是如何判断的?

收获园豆:100
dudu | 高人七级 |园豆:36170 | 2015-04-17 22:02

while(havd_send < total_length)

{

    ngx_output_filter();//一直让他发送 ,直到把total_length的数据发完

}

czj9001 | 园豆:4 (初学一级) | 2015-04-18 23:13

@czj9001: 建议使用buffer,参考代码见3.1.4. Sending the body

dudu | 园豆:36170 (高人七级) | 2015-04-19 20:53

@dudu: 请问能说的详细点么?或者直接看看您的代码, 你指的buf是指out.buf这个么?(如果是的话,这个buf应该也是分配的内存有限吧),方便加QQ详细了解下么,谢谢

czj9001 | 园豆:4 (初学一级) | 2015-04-19 21:21
其他回答(1)
0

没有人回答,自己换了一种方案

czj9001 | 园豆:4 (初学一级) | 2015-06-11 20:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册