我已经有一段时间没有使用 Rebol 中的 FastCGI 工具了,所以我不能很好地回答第一个问题,但我可以帮助你解决第二个问题,尽管你可能不喜欢它。
目前还没有人为 R3 重新创建 fastcgi:// 方案。我说“重新创建”是因为 R3 具有与 R2 完全不同的端口模型,因此端口方案根本不能在两个平台之间移植。此外,R2/Command 端口方案是内置的本地代码,即使它是开源的,也无法移植到 R3,因为 R3 的系统模型也不同。而且不管它的可移植性如何,R2 都包含许多 Rebol Technologies 无权开源的商业许可代码——几乎所有它可以开源的东西都已经进入了 R3。因此,如果它不存在,则可以肯定地认为它根本不兼容或不可打开。
使用遵循 R3 模型的全新 fastcgi:// 方案在 R3 中从头开始会更快、更容易。即使我们拥有 R2 源代码,最大的帮助就是记录 FastCGI 协议,并且 AFAIK 该协议在其他地方有更好的文档记录。在这种情况下,为这类事情优化主机端口可能是个好主意,这在 R3 中更容易做到。
从好的方面来说,据我所知,FastCGI 协议并不难做,而新的 R3 端口模型更适合这种事情,所以从头开始可能不会太难。如果幸运的话,这一切都可以在仅在常规 R3 解释器上运行的用户代码中完成,无需主机代码调整。所以这个消息不必那么糟糕。
现在尝试回答您的第一个问题:这取决于。
这真的取决于你想要做什么,以及你是如何设置的。 CGI 每次都有启动进程的开销,所以只有当进程启动开销明显小于请求的其余开销(例如文件系统或数据库访问)时,它才会很快。 Rebol,尤其是 R2,有大量的进程启动开销,因为它是一个解释器,在启动时有一些内置的解释代码要加载。您可以通过使用 SDK 仅使用您需要的代码来创建您的应用程序,从而最大限度地减少启动开销,但这在您的特定情况下可能仍然没有足够的帮助(不知道您要做什么)。
FastCGI 是一种通过运行进程外应用服务器而不是针对每个请求启动新进程来消除进程启动开销的方法。对于像 Rebol 这样具有显着流程启动开销的东西,节省的成本同样显着。
您需要考虑的一件事是,R2 在大多数情况下都有一个每进程单线程模型,因此如果您想处理多个并发请求,您要么必须在同一个进程中分部分执行它们(像 Node.js)或让 FastCGI 分配多个服务器进程来独立处理多个请求,或者两者兼而有之。如果这种情况令人生畏,请务必向 Rebol 专家寻求建议,或者只是设置 FastCGI 以启动更多应用服务器以同时运行。
因此,使用 FastCGI 设置每秒可以执行多少个请求取决于您如何配置 FastCGI、如何编写 FastCGI 处理程序代码以及您的请求正在执行多少和什么样的工作。
虽然在 CGI 模式下您每秒收到 4-5 个请求,但这说明了这一点。这异常缓慢。在最坏的情况下,Rebol 的启动开销并没有那么慢。这意味着您的请求正在执行很多,或者您没有足够的 RAM 来一次运行多个 CGI 进程,或者您的 CGI 配置错误。在这种情况下,我不确定 FastCGI 是否能像使用更好的硬件或更好地配置 Apache 一样提供帮助。尽管如此,请确保您有足够的 FastCGI 工作进程并编写处理程序以同时处理多个请求,这样您将尽可能节省开销。
祝你好运!