Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用apache2和mod_proxy_fcgi禁用缓冲?_Apache_Buffer_Mod Proxy_Fastcgi_Apache2.4 - Fatal编程技术网

如何使用apache2和mod_proxy_fcgi禁用缓冲?

如何使用apache2和mod_proxy_fcgi禁用缓冲?,apache,buffer,mod-proxy,fastcgi,apache2.4,Apache,Buffer,Mod Proxy,Fastcgi,Apache2.4,我用杰西的应用程序在ADEache 2.4上使用MyPro XyXyFCGI,C++应用程序使用LIbfcGIP.Serv.P/P> 我的问题是,apache仍然在缓冲我的响应数据。我使用wireshark确认libfcgipp库没有对其进行缓冲:通过spawn fcgi启动fcgi应用程序后,数据会尽快发送到apache web服务器。但是在我的浏览器(我用来测试,稍后会有一个C++客户端),它只在我“杀死”/关闭服务器应用程序中的发送请求后出现。 所以我假设我需要禁用apache或mod_p

我用杰西的应用程序在ADEache 2.4上使用MyPro XyXyFCGI,C++应用程序使用LIbfcGIP.Serv.P/P> 我的问题是,apache仍然在缓冲我的响应数据。我使用wireshark确认libfcgipp库没有对其进行缓冲:通过
spawn fcgi
启动fcgi应用程序后,数据会尽快发送到apache web服务器。但是在我的浏览器(我用来测试,稍后会有一个C++客户端),它只在我“杀死”/关闭服务器应用程序中的发送请求后出现。
所以我假设我需要禁用apache或mod_proxy_fcgi(或两者)的缓冲。但是我找不到关于如何做到这一点的适当文档。

一些注释,因为我刚刚花了几个小时的时间尝试找到这个问题的答案:

  • 当使用
    mod_proxy
    /
    mod_proxy\u fcgi
    时,不可能完全禁用输出缓冲,但是,您仍然可以将响应流成块
  • 根据我的实验,似乎在输出刷新到浏览器之前,块必须至少为4096字节
  • 您可以使用
    mod_fastcgi
    mod_fcgi
    模块禁用输出缓冲,但这些mod在Apache2.4中并不流行/广泛使用
  • 如果启用了
    mod_deflate
    ,并且没有为虚拟主机/目录/etc设置
    SetEnv no gzip 1
    。这是流式数据,那么gzip将不允许缓冲区刷新,直到请求完成
  • 我正在测试如何最好地使用Drupal 8新的BigPipe功能来向客户端发送流式请求,我在中发布了更多的说明。

    结果是,在中为Apache 2.4.31添加了对
    flushpackets
    flushwait
    的支持。如果您使用的是Apache 2.4.31或更高版本,则可以使用
    禁用缓冲,如中所述:

    
    #注意:唯一不同的部分是/path/to/app.sock
    SetHandler“代理:unix:/path/to/app.sock|fcgi://localhost/"
    #定义匹配的辅助对象。
    #与SetHandler匹配的部分是
    #跟着管道走。如果需要区分,“localhost;可以
    #有什么独特的吗。
    

    注意:
    flushpackets
    flushwait
    目前只包括在中,因为还没有被后端口到2.4.x分支。

    您有
    mod_缓存
    模块吗?它只在
    mods可用
    中,但在
    mods启用
    中没有,所以我猜它没有启用。我用错了这里的术语。我的意思是“缓冲”,而不是“缓存”。您尝试过和指令吗?我应该如何使用它们?零表示系统默认值,所以我不能通过这些禁用缓冲,可以吗?一种解决方法是用“\n”右键填充您对4096的SSE响应