这些并不是真正的“6 PHP 类型”,而是两种 PHP 类型,每种类型都运行在 3 个不同的 Apache 实现中。
suphp、suphp_worker 和 suphp_event
suPHP本身是 PHP 的包装器,在给定的用户权限下运行 PHP(例如,不同于 Apache 运行的权限)加上一个 Apache 模块 (mod_suphp),它允许您运行 suPHP - 基本上是在 CGI 模式下。CGI 模式简化意味着,传递给 PHP 的每个请求都会启动一个新的 PHP(运行时)进程。就 CPU 使用率而言,这很昂贵,而且与持久的 PHP 运行时相比速度更慢(我猜大约是 3-5 倍)。
我假设第一个变体使用Apache 的 prefork MPM,与其他 MPM 相比,它被广泛使用和测试,但速度相当慢。Prefork 顾名思义:它分叉给定数量的 apache 进程,并保持它们可用于传入的请求。
下一个 (suphp_worker) 使用worker MPM代替。Worker 是预生成进程和线程的混合体,它通常比 prefork 快(用于传递大约两倍的静态内容)并且使用更少的内存。
最后一个 (suphp_event) 似乎使用了 suPHP + MPM event,它再次使用了另一个进程/线程模型而不是 worker。从我看到的基准测试来看,事件和工作线程的速度大致相同 - 事件 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 进程。它有一长串您应该考虑的不兼容问题。
最后一个变体 (mod_php_itk) 使用第三方ITK MPM for Apache,这是 Apache prefork MPM 的一个分支,具有在给定用户权限下运行每个 VirtualHost 的选项。它还使您能够对每个 VirtualHost 实施额外的限制(例如客户端数量)。
建议
如果这些是您唯一的选择,并且您“独自”在您的机器上(又名:您不打算共享主机),我可能会坚持使用好的 ol' mod_php。
如果您正在规划多个网站,则需要检查您的优先级:
我更喜欢使用第三个选项,它使用 FastCGI,为您提供更多分离权限和访问权限的可能性 - 但这似乎没有提供。
归档时间: |
|
查看次数: |
3345 次 |
最近记录: |