CGI 程序通常会收到一个 HTTP 请求。
HTTP 1.1 支持持久的 HTTP 连接,从而在不关闭连接的情况下发出多个 HTTP 请求/响应。
有没有办法让 CGI 程序(或类似机制)在同一连接上处理多个 HTTP 请求/响应?
我正在使用 Apache httpd。
最佳答案
Keep-alives 是高级 HTTP 功能之一,完全由 Web 服务器处理。它们超出了 CGI 应用程序本身的范围。
通过 Apache mod_cgi 访问 CGI 脚本对我来说适用于 keep-alive。浏览器重新使用相同的 TCP 连接来获取页面,然后获取页面引用的资源,而相关脚本无需执行任何特殊操作。
如果您的意思是您想让相同的 CGI 进程 处理一个请求然后处理下一个请求(而不是进程结束并产生一个新的进程),那么恐怕不是这样可能的。 Web 服务器将拦截 keep-alives 并使它们看起来像单个请求,然后您的脚本才能对其执行任何操作。 (如果您想这样做以提高性能,请考虑使用不同的网关接口(interface),例如 FastCGI 或特定于语言的选项,例如 WSGI。)
关于http - 用于处理持久 HTTP 连接上的多个请求的 CGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408732/