1

据我了解,一旦您在处理完您的请求后调用 FCGI_Accept(),服务器就会关闭与客户端的连接,并且无法向该客户端发送任何其他内容。因此,我想知道是否有任何方法可以防止这种情况并“保存”连接(句柄?),以便我可以在处理另一个请求后响应该请求。我打算在 Apache 上使用 mod_fastcgi,如果它有所作为的话。

故事:

我正在尝试在服务器上使用 FastCGI 并在客户端使用 Ajax 长轮询来制作即时消息传递系统。这个想法是创建一个事件驱动的服务器,客户端的“get”请求检查未完成的消息以返回或存储连接以供以后响应;“发送”请求会检查与收件人的可用连接,如果不可用,则将消息存储在内存中。我首先使用 FastCGI 的唯一原因是因为它使用持久进程,它允许在连接之间共享资源,所以我愿意接受其他建议。我知道您可以将数据库用作共享资源,并让每个连接产生一个轮询数据库以获取新信息的进程,尽管它有效,但似乎效率非常低。

我刚刚开始研究 FastCGI,所以也许这不是解决我的问题的最合适的方法,但这是我遇到的第一个障碍。提前致谢。

4

1 回答 1

2

您所描述的与 FastCGI 无关。这是无连接架构 HTTP 的工作方式。长轮询会话必须由客户端(最好是服务器)保持。继续阅读http://xmpp.org/extensions/xep-0206.html

更先进但新技术是http://www.websocket.org/

于 2012-04-25T06:22:56.070 回答