CN:FAQ

From PHP-FPM

Jump to: navigation, search

Contents

php-fpm 可以和 ZendOptimize 一起用吗?

完全可以。

php-fpm 可以和 ZendPlatform、xcache、eAccelerator、APC 等的优化器一起用吗?

是的。php-fpm 的架构和任何一种用于高速 opcode 缓存的共享内存都适用。唯一的限制是:所有的 worker 进程只能适用一个缓存,即使它们用不同的 uid/gid 运行。

为什么我要给 php 打补丁呢?spawn-fcgi 不需要这样!

php-fpm 的创建是为了增强方便管理。没有打过补丁的 php 不能做到:

  • 平滑重启 php 而不丢失请求,包括升级 php 二进制文件 以及/或者 扩展。
  • 用不同的 uid / gid / chroot 环境运行 worker 进程
  • 所有的设置只有一个配置文件
  • 根据负载动态请求 (TODO)
  • 对 php 请求实时统计性能 (TODO)

如果你自己不能为PHP打补丁,那么例如spawn-fcgi之类的其他工具更适合你,尽管它仅仅有有限的可选功能;如果你需要多个FastCGI池,还需要定制脚本。

为什么要用 root 运行 php-fpm 呢?这安全吗?

用 root 权限启动 php-fpm 只有在你打算用不同 uid/gid 的 php 来处理请求时才有意义。比如,在共享主机上的不同站点。因为只有在 master 进程用 root 运行的时候,才可以建立不同 uid/gid 的子进程。这是相当安全的。master 进程自己从来不会去处理请求。 在任何情况下,php-fpm 都不会用 root 身份来处理请求。


php-fpm 可以加速 php 脚本处理速度吗?

不,它不会影响处理速度。不过,如果你使用一些特殊特性,对于一些特定的请求还是可以有性能提升的。


如果我把我的网站从 mod_php 迁移到 php-fpm ,我会得到性能提升吗?

通常,当有服务器上有大量空闲内存可用时,能从迁移到 php-fpm 中得到的性能提升可能不大。但是如果内存并不充裕,性能提升还是很可观的,在某些情况下可以达到 300-500%。这可能是由于 nginx + php-fpm 一般会比 Apache + mod_php 使用更少的内存。而且 VFS 缓存会由于更多的空余内存而更有效地工作。


php-fpm 将来会被官方的 php 包含吗?

我希望如此。目前,php-fpm 代码的协议是 GPL 。所以现在 php-fpm 的代码与 php 协议(类似 bsd)并不匹配。这是临时性措施。这样的选择是为了简化开发过程。一旦代码的功能完备,比如自适应生成子进程和其他一些东西,协议会改为一个相匹配的。之后,php-fpm 会正式发布给 php 开发团队,并被建议包含。 现在许可证已经修改成类BSD的许可证。这意味着它能包含到PHP或者PECL。我们已经接触了PHP小组和PECL小组,努力尝试把它包含或部分包含进PHP核心(并且可能进程管理部分有hooks和程序存在于PHP核心之外,这样它就能更快,并且独立于PHP各版本)