是否可以使用FastCGI(mod_fcgi)在进程间共享PHP 5.5 opcache?

时间:2014-05-03 10:40:50

标签: php fastcgi

我的网站使用FastCGI(mod_fcgi)在PHP 5.5上运行。我知道其他opcache类型(如APC)不能很好地工作,因为内存不在php-cgi进程之间共享here)。

我使用的是PHP 5.5内置的OPcache。进程之间是否共享内存,或者这与使用mod_fcgi的APC / Xcache完全相同?

有没有办法测试它?

1 个答案:

答案 0 :(得分:6)

我从来没有理解为什么这甚至被视为一种可能性,这不是一个现实的可能性:

APC和Opcache都有几种形式的共享内存,它们的默认值和最合适的类型是mmap内存,但由于各种奇怪的原因,它们需要支持劣质内存,这些劣等类型都不会留下这种工作的可能性(即使是不切实际的)。

说到mmap ......

APC

如果您不提供文件掩码,APC使用匿名共享映射,则不能跨不同的进程边界共享它,这是不可能的。

如果你确实提供了文件掩码,APC使用了不同步的共享映射,尝试在不同的进程边界上共享它是没有意义的,因为它几乎总是包含映射内存的损坏阴影,&# 39;是不同步的本质。

Opcache

没有为您提供APC尝试提供的任何非选项,所有映射都是匿名完成的。

解决方案

使用理智的网络服务器,例如nginx / lighthttpd,并使用PHP附带的fpm

FPM的流程模型允许子进程处理它具有公共缓存,问题解决,适用于APC和Opcache。