我即将编写一个FastCGI / SCGI(独立实现)服务器,但我对网络化,特别是延迟应用程序编程没有太多经验。
当我详细思考我想做什么时,我遇到了一个理论问题。当Web服务器向我的服务器发送TCP请求时,输入(字节)将被处理到当前处理程序(FastCGI / SCGI处理程序)。问题是:如果响应创建需要一些时间会发生什么?让我们说客户端请求一个大约10MB的大文件。我是对的,服务器需要等到10MB被刷新到客户端?所以有结论:如果客户端的互联网连接很低,我的服务器会被阻塞,直到刷新完整的10MB,不是吗?
例如,需要执行SQL语句的进程请求如何,需要一些时间。此时服务器将被阻止,不是吗?请纠正我。
要解决这个问题,我唯一的想法就是使用线程 - 而且我对它们不会很有经验。如果我正确理解SCGI协议,那么线程不是解决方案,因为它期望立即回复请求。而不是支持请求ID的FastCGI。你的解决方案是什么?