我想向您询问有关您知道的PHP / Apache配置方法的优缺点。我将开始我自己:
---------------- PHP作为Apache模块 ----------------
优点:速度快,因为您不需要每次都启动exe,尤其是在mpm-worker模式下。您也可以在此模式下使用各种PHP加速器,例如APC或eAccelerator。
缺点:如果您以mpm-worker模式运行apache,则可能会遇到稳定性问题,因为任何php脚本中的每个故障都会导致该apache进程的整个线程池不稳定。同样在此模式下,所有脚本均代表apache用户执行。这对安全性不利。mpm-worker配置需要PHP在线程安全模式下编译。至少CentOS和RedHat默认存储库没有线程安全的PHP版本,因此在这些OS上,您至少需要自己编译PHP(有一种在Apache上激活worker mpm的方法)。线程安全的PHP二进制文件的使用被认为是实验性的并且是不稳定的。另外,许多PHP扩展不支持线程安全模式或未在线程安全模式下经过良好测试。
---------------- PHP作为CGI ----------------
这似乎是最慢的默认配置,它本身似乎是“ con”;)
---------------- 通过mod_suphp将PHP作为CGI ----------------
优点:suphp允许您代表脚本文件所有者执行php scipts。这样,您可以安全地将同一台计算机上的不同站点分开。另外,suphp允许每个虚拟主机使用不同的php.ini文件。
缺点:PHP处于CGI模式意味着性能降低。在这种模式下,您不能使用APC之类的php加速器,因为每次生成新进程来处理脚本时,都会使以前进程的缓存无效。顺便说一句,您知道在此配置中应用某些加速器的方法吗?我听说过将shm用于php字节码缓存。另外,在这种模式下,您无法通过.htaccess文件配置PHP。如果您需要通过.htaccess设置各种基于脚本的选项(php_value / php_flag指令),则需要为此安装P ECL htscanner。
---------------- 通过suexec将PHP作为CGI ----------------
此配置看起来与suphp相同,但是我听说它速度较慢且安全性较低。几乎相同的优点和缺点。
---------------- PHP为FastCGI ----------------
优点:FastCGI标准允许单个php进程在杀死php进程之前处理多个脚本。这样您就可以获得性能,因为无需为每个脚本启动新的php进程。您也可以在此配置中使用PHP加速器(请参阅缺点部分以获取评论)。同样,FCGI几乎与suphp一样也允许php进程代表某些用户执行。mod_fcgid似乎对Apache具有最完整的fcgi支持和灵活性。
缺点:在fastcgi模式下使用php加速器将导致大量内存消耗,因为每个PHP进程将具有自己的字节码缓存(除非有某些加速器可以将共享内存用于字节码缓存。是否有?)。FastCGI的配置也有些复杂。您需要创建各种配置文件并进行一些配置修改。
看来,fastcgi是最稳定,安全,快速和灵活的PHP配置,但是配置起来有些困难。但是,也许是,我错过了什么?
欢迎发表评论!