6

可能重复:
我从来没有真正理解:什么是 CGI?

在 lighttpd config 中,我们定义了两条路径(如下图),一条是 PHP 的二进制文件,一条是 socket 路径。我的问题是,lighttpd 会在哪一点获取 PHP 创建的最终 HTML 输出?二进制文件是否将输出作为响应提供给 lighttpd?或者它是否在另一个地方创建一个临时文件并且服务器获取它?

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php-cgi",
                     "socket" => "/tmp/php.socket"
                 )))
4

2 回答 2

1

据我了解,bin-path用于启动 FastCGI 服务器(如果尚未启动),而socket用于在启动后将请求代理到服务器。

/tmp/php.socket因此,最终的 HTML 是在请求​​处理完毕后提取的;它是一个命名管道,而不是网络套接字,但它们在任何其他方面都非常相似。

于 2012-12-27T22:42:57.567 回答
1

PHP 可以作为 CGI 二进制文件或 Apache 模块运行。当用作 CGI 二进制文件时,HTTP 服务器将通过管道命名管道与 PHP 通信。这些可以利用标准输出,这是一种不需要任何磁盘访问的进程间通信形式。如果作为 Apache 模块运行,PHP 实际上是 Apache 服务器的一部分。这比作为 CGI 执行要快得多,但有一些安全限制。

于 2012-12-28T01:22:39.283 回答