> CGI(php-cgi)@H_404_2@> FastCGI(PHP-fpm)@H_404_2@> Mod_PHP@H_404_2@> suPHP
我需要知道这些处理程序的优缺点以及每个适合的环境?
例如,如果我正在运行一个共享托管服务器,上述处理程序中的哪一个适合我?@H_404_2@或者,如果我正在管理私人服务器?
suPHP,suPHP_worker和suPHP_event
suPHP本身是PHP的包装器,在给定的用户权限下运行PHP(例如,与Apache运行的权限不同)加上一个允许你运行suPHP的Apache模块(mod_suPHP) – 基本上是在CGI模式下运行. CGI模式简化意味着每个传递给PHP的请求都会启动一个新的PHP(运行时)进程.就cpu使用而言,这是昂贵的,并且与持久的PHP运行时相比较慢(约为3-5倍,我猜).
我假设第一个变体使用Apache’s prefork MPM,与其他MPM相比,它被广泛使用和测试但相当慢. Prefork做了它的名字所暗示的:它分配给定数量的apache进程并保持它们可用于传入的请求.
下一个(suPHP_worker)使用worker MPM代替. Worker是预生成的进程和线程的混合,通常比prefork更快(用于传递静态内容about twice)并且使用更少的内存.
最后一个(suPHP_event)似乎使用了suPHP MPM event,它再次使用了另一个进程/线程模型而不是worker.从benchmarks i’ve seen开始,事件和工作人员的速度大致相同 – 事件MPM(至少使用Apache 2.2,您的提供商可能会这样做)被标记为实验性的.
mod_PHP,mod_PHP_ruid2和mod_PHP_itk
这是一种不同类型的PHP处理程序实现:Apache预启动PHP运行时并将传入的请求传递给它,根据需要生成新进程.这比suPHP快得多,但是没有用户正确分离的缺点:所有PHP进程都在与Apache本身相同的权限下运行.
第一个变体可能使用prefork MPM(如上所述),因为mod_PHP与来自worker或event的线程模型不兼容.
第二个变体(mod_PHP_ruid2)似乎还使用了Apache模块mod_ruid2,它允许您在不同的用户权限下运行每个Apache VirtualHost – 这包括PHP进程.它有一个很长的list of incompabilities你应该考虑.
最后一个变体(mod_PHP_itk)使用第三方ITK MPM for Apache,Apache prefork MPM的一个分支,选项在给定的用户权限下运行每个VirtualHost.它还使您能够为每个VirtualHost强制执行其他限制(例如,客户端数量).
建议
如果这些是你唯一的选择,并且你在你的机器上“独自”(又名:你不计划共享主机)我可能会坚持使用好的’mod_PHP.
如果您要规划多个网站,则需要检查优先级:
>安全性超过性能:与suPHP_worker一起使用.两者(工人MPM和suPHP)都经过广泛测试,为您提供了良好的安全起点.静态文件的性能应该是好的,PHP不是那么多.@H_404_2@>性能优于安全性:可能是mod_PHP_ruid2,但仅仅是因为我对ITK的经验不佳
我更喜欢使用第三个选项,它使用FastCGI,为您提供更多分离权限和访问权限的可能性 – 但似乎没有提供.