Tag: fastcgi

如何使用FCGI检测客户端终止的连接?

我有一个用C语言编写的FCGI应用程序。我们遇到客户端关闭活动连接的情况 – 即在页面加载期间离开页面 – 如果可能的话,我们希望在应用程序中检测到这一点。 我们的Web服务器(nginx)配置为在客户端连接意外关闭时关闭FCGI连接,所以我希望通过在事务结束时查看FCGI流状态,我们可能能够检测到客户端 -启动了封闭连接。 我的问题是:在调用FCGX_Finish_r()之前,是否可以在输出流上使用FCGX_GetError()检测到这一点? 如果没有,我怎么能陷入这样的状况呢? 我尝试在FastCGI邮件列表上询问,但似乎列表已关闭。

使用fastcgi库时libxml到stdout

我们正在尝试使用libxml创建XML提要,生成输出的代码工作正常,生成有效的XML列表,唯一的问题是输出转到错误日志(通过stderr)而不是必需的使用fastcgi库时的网页(通过stdout)。 无论代码是使用浏览器还是使用curl运行,都会出现同样的情况。 Versions/releases: Fedora: release 20 Apache: 2.4.10 fastcgi:? the latest libxml: 2 这个问题没有包含任何代码,因为我认为它不会有所帮助,问题在于fastcgi库’接管’stdout和libxml不承认这一点,而不是代码本身。 如果列表确实被认为是必要的,那么可以添加它,但会增加冗长度而不需要帮助清晰。 简而言之,问题是“我们如何在Linux / Apache上使用带有fastcgi的libxml?” 编辑:如果我提到我们正在用C开发,可能会有所帮助。 编辑:也可能帮助我们知道我们已经尝试了这个标准libxml示例中建议的所有输出方法,用’ – ‘代替’真实’文件名,因此使用stdout。 这没有帮助我们的原因,输出需要转到fastcgi的’cgiOut’替代方案,但在所有情况下都转到stderr。 编辑:据我所知,只有传递libxml文件名,而不是句柄,才能传递输出。 如果输出应该转到stdout,不幸的是,使用文件名’ – ‘,如上所述,输出然后转到错误日志。 如果有可能传递libxml一个文件句柄(当使用fastcgi这将是cgiOut)而不是一个名称然后我怀疑问题将得到解决,但我看不出有任何办法可以做到这一点。

获取FastCGI中的所有客户端头文件(C / C ++)

目前我有点问题: 我想为nekoVM创建FastCGI / CGI绑定。 这是通过编写VM加载的一些线索C / C ++代码来完成的。 我想使我的绑定行为尽可能与neko本机API(mod_neko,mod_tora)兼容。 使用mod_neko,可以获取客户端发送的所有HTTP头。 据我所知,只有通过调用getenv(‘header_name’)才能获得FastCGI的HTTP头。 要使用此function,您需要知道所有标题的名称。 我的问题:是否有可能获得客户端发送的所有标头?

FastCGI:检索请求标头

我目前正在使用FastCGI与Apache和mod_fcgid一起开发Web C ++应用程序。 我正在尝试检索请求的标头,但我没有找到如何执行此操作。 经过一些研究,我认为标题位于“FCGX_Request”的属性“envp”中,但它包含环境变量,例如: REMOTE_ADDR: 192.168.0.50 SERVER_SOFTWARE: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0f DAV/2 mod_fcgid/2.3.6 REDIRECT_UNIQUE_ID: TxytP38AAAEAABpcDskAAAAE FCGI_ROLE: RESPONDER HTTP_ACCEPT_LANGUAGE: fr SERVER_SIGNATURE: Apache/2.2.21 [etc.] 这些变量为我提供了有用的信息,但我需要真正的HTTP头,特别是“Cookie”。 我试图读取“FCGX_Request”的“in”流,但似乎是请求体(POST数据)。 由于我的应用程序是multithreading的,我使用“FCGX_Accept_r()”,如下所示: while(true) { FCGX_Init(); FCGX_Request* fcgiRequest = new FCGX_Request; FCGX_InitRequest(fcgiRequest, 0, 0); if(FCGX_Accept_r(fcgiRequest) process(); } 但实际上,我不使用线程。 请求一个接一个地执行。 如何获取请求标头? 谢谢。

fcgio.cpp:50:错误:在此范围内未声明’EOF’

我试图在Linux Ubuntu 10.x机器上构建fastcgi。 我运行以下命令: ./configure make 我收到以下错误: fcgio.cpp: In destructor ‘virtual fcgi_streambuf::~fcgi_streambuf()’: fcgio.cpp:50: error: ‘EOF’ was not declared in this scope fcgio.cpp: In member function ‘virtual int fcgi_streambuf::overflow(int)’: fcgio.cpp:70: error: ‘EOF’ was not declared in this scope fcgio.cpp:75: error: ‘EOF’ was not declared in this scope fcgio.cpp: In member function ‘virtual int fcgi_streambuf::sync()’: fcgio.cpp:86: error: […]