在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 指回调函数读取的长度
//这样循环容易进程阻塞,移植在循环中,
}
while循环的条件是如何判断的?
while(havd_send < total_length)
{
ngx_output_filter();//一直让他发送 ,直到把total_length的数据发完
}
@czj9001: 建议使用buffer,参考代码见3.1.4. Sending the body
@dudu: 请问能说的详细点么?或者直接看看您的代码, 你指的buf是指out.buf这个么?(如果是的话,这个buf应该也是分配的内存有限吧),方便加QQ详细了解下么,谢谢
没有人回答,自己换了一种方案