在lighttpd配置中,我们定义了两个路径(如下所示),其中一个是PHP的二进制文件,另一个是套接字路径。我的问题是,lighttpd在哪一点上获取PHP创建的最终HTML输出?二进制文件是否将输出作为响应提供给lighttpd?或者它是否在另一个地方创建临时文件并且服务器获取它?
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket"
)))
答案 0 :(得分:1)
根据我的理解,bin-path
用于启动FastCGI服务器(如果尚未启动),而socket
用于在启动后将请求代理到服务器中。
因此,在处理完请求后,最终的HTML将从/tmp/php.socket
中提取出来;它是一个命名管道而不是网络套接字,但它们在任何其他方面都非常相似。
答案 1 :(得分:1)
PHP可以作为CGI二进制文件运行,也可以作为Apache模块运行。当用作CGI二进制文件时,HTTP服务器将通过pipes或named pipes与PHP通信。这些可以利用stdout,这是一种不需要任何磁盘访问的进程间通信形式。如果作为Apache模块运行,PHP实际上是Apache服务器的一部分。这比作为CGI执行要快得多,但有一些安全限制。