PHP如何与HTTP服务器交互? (比如lighttpd)

时间:2012-12-27 22:38:32

标签: php lighttpd

  

可能重复:
  I never really understood: what is CGI?

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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