当前位置: 首页 > 知识库问答 >
问题:

Apache FastCGI PHP中FastCgiExternalServer和FastCgiServer之间的区别?

华福
2023-03-14

让我声明我是FastCGI的新手。我的OS X机器上有MAMP的Apache。默认的PHP处理程序是Apache Handler 2.0(libphp5.so)。我想更改为FastCGI,并遵循以下答案:如何配置Apache通过终端在Ubuntu 12.04上运行PHP作为FastCGI?

我在httpd.conf末尾补充了以下内容:

<IfModule mod_fastcgi.c>
   AddHandler php5.fcgi .php
   Action php5.fcgi /php5.fcgi
   Alias /php5.fcgi /Applications/MAMP/fcgi-bin/php5.fcgi
   FastCgiServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
   #FastCgiExternalServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
   <Directory /Applications/MAMP/fcgi-bin>
       Order allow,deny
         Allow from all
   </Directory> 
</IfModule>

但是,正如您所看到的,FastCgiExternalServer被注释掉了。相反,我必须使用FastCgiServer,否则Apache在尝试请求页面时会给我以下错误:

[Fri May 06 23:25:22 2016][error][client::1](2)没有这样的文件或目录:FastCGI:无法连接到服务器“/Applications/MAMP/fcgi-bin/php5.fcgi”:connect()失败

[Fri可能06 23:25:22 2016][错误][客户端::1]FastCGI:不完整的报头(0字节)从服务器接收/应用程序/MAMP/fcgi-bin/php5.fcgi

但是/Applications/MAMP/fcgi-bin/php5。fcgi存在,其内容为:

#!/bin/bash
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi
exec $PHP_CGI

FastCgieServerFastCgieExternalServer之间有什么区别?为什么FastCgieExternalServer在我的案例中不起作用,但FastCgieServer起作用?

共有2个答案

长孙燕七
2023-03-14

如果性能是原因,我会说使用Apache和fcgid。这被认为对性能更好。为了处理性能问题,mod_fcgid启动多个CGI程序实例来处理并发请求。对于PHP开发人员来说,这是mod_php的替代方案,可以提供更高的性能。这篇文章我发现是伟大的资源学习

http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html

云正信
2023-03-14

FastCgiServer是一个服务器,mod_fastcgi将为其执行进程管理——上下旋转实例,并为它们提供一个unix域套接字以供侦听。无需外部操作即可启动fastcgi服务器。

FastCgiExtranalServer是一个服务器,mod_fastcgi不会对其进行任何进程管理--它只会接触到unix或TCP套接字,您告诉它使用并向其转发请求/响应。您或http pd之外的某个守护进程必须启动一些东西来侦听列出的套接字。最基本的方法是fcgistarter实用程序,其他选项是php-fpm。

 类似资料:
  • 问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。

  • 问题内容: 我对和感到困惑。我有两本PHP书。一个说它们是相同的,但是另一个说它们是不同的。我以为他们也一样。 他们不一样吗? 问题答案: 是按位与。请参见按位运算符。假设您这样做: 是逻辑AND。请参阅逻辑运算符。考虑一下这个真值表:

  • 问题内容: 这个问题已经在这里有了答案 : JavaScript比较中应使用哪个等于运算符(== vs ===)? (49个答案) 5个月前关闭。 和之间的区别是什么?我也看过和运算符。还有更多这样的运营商吗? 问题答案: 并且是严格的比较运算符: JavaScript具有严格和类型转换相等性比较。为了相等,要比较的对象必须具有相同的类型,并且: 当两个字符串在相同位置具有相同的字符序列,相同的长

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。