PHP处理程序(CGI与FastCGI与Mod_PHP对比suPHP)的区别是什么?

前端之家收集整理的这篇文章主要介绍了PHP处理程序(CGI与FastCGI与Mod_PHP对比suPHP)的区别是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,有四种不同的 PHP处理程序(AFAIK).

> CGI(php-cgi)
> FastCGI(PHP-fpm)
> Mod_PHP
> suPHP

我需要知道这些处理程序的优缺点以及每个适合的环境?

例如,如果我正在运行一个共享托管服务器,上述处理程序中的哪一个适合我?
或者,如果我正在管理私人服务器?

这些并不是真正的“6 PHP类型”,而是两种PHP类型,每种类型都运行在3种不同的Apache实现中.

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不是那么多.
>性能优于安全性:可能是mod_PHP_ruid2,但仅仅是因为我对ITK的经验不佳

我更喜欢使用第三个选项,它使用FastCGI,为您提供更多分离权限和访问权限的可能性 – 但似乎没有提供.

猜你在找的PHP相关文章