Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache FastCGI PHP中FastCgiExternalServer和FastCgiServer之间的区别?_Php_Apache_Fastcgi_Mod Fastcgi - Fatal编程技术网

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

Apache FastCGI PHP中FastCgiExternalServer和FastCgiServer之间的区别?,php,apache,fastcgi,mod-fastcgi,Php,Apache,Fastcgi,Mod Fastcgi,请允许我声明,我是FastCGI的新手。我的OSX机器上有MAMP的Apache。默认的PHP处理程序是ApacheHandler 2.0(libphp5.so)。我想切换到FastCGI,并按照下面的答案进行操作: 我在httpd.conf的末尾添加了以下内容: <IfModule mod_fastcgi.c> AddHandler php5.fcgi .php Action php5.fcgi /php5.fcgi Alias /php5.fcgi /Appli

请允许我声明,我是FastCGI的新手。我的OSX机器上有MAMP的Apache。默认的PHP处理程序是ApacheHandler 2.0(libphp5.so)。我想切换到
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>

fastcgierserver
FastCgiExternalServer
之间有什么区别?为什么
FastCgiExternalServer
在我的例子中不起作用,但是
fastcgierserver
起作用了?

fastcgierserver是一个mod_fastcgi将对其进行进程管理的服务器--上下旋转实例,并给它们一个unix域要监听的套接字。无需外部操作即可启动fastcgi服务器


FastCgiExternalServer是一个mod_fastcgi不会为其执行任何进程管理的服务器——它只会接触到您告诉它使用的unix或TCP套接字,并将请求/响应转发给它。您或httpd之外的某个守护进程必须在所列套接字上启动侦听程序。最基本的方法是“fcgistarter”实用程序,其他选项是php fpm。

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


如果你在2016年做PHP fastcgi,那么看看mod_proxy_fcgi和PHP fpm,而不是mod_fastcgi。要获得更好的性能,请使用nginx而不是apache(看看google:nginx apache performance)。@KamilKiełczewski认为nginx的性能优势并不全面准确。对于静态内容,是的,但不是动态内容,它们大致相当。谷歌搜索的一个示例页面:@jeffmcneill,但未来的web方向是静态客户端(例如构建在Angular2上),用于生成动态页面内容(客户端是静态纯JS+HTML+CSS文件,加载此静态文件并运行JS后,所有动态都在浏览器端启动),该客户端仅通过RESTfull请求与后端通信(json,ajax)-所以静态性能非常重要:)所以在MVC模型中,M在后端,VC在前端:)@KamilKiełczewski是的,静态很重要,我没有说其他,这是Nginx的优势所在,但动态部分Nginx没有提供更好的性能。零件的顺序无关紧要。如果需要客户端执行所有动态操作,那么您将向客户端发送所有内容,这可能是一个动力不足的智能手机。对于除最简单的应用程序以外的许多/大多数配置,这是不明智的。
#!/bin/bash
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi
exec $PHP_CGI