我的网站使用FastCGI(mod_fcgi
)在PHP 5.5上运行。我知道其他opcache类型(如APC)不能很好地工作,因为内存不在php-cgi进程之间共享(here)。
我使用的是PHP 5.5内置的OPcache。进程之间是否共享内存,或者这与使用mod_fcgi
的APC / Xcache完全相同?
有没有办法测试它?
答案 0 :(得分:6)
我从来没有理解为什么这甚至被视为一种可能性,这不是一个现实的可能性:
APC和Opcache都有几种形式的共享内存,它们的默认值和最合适的类型是mmap内存,但由于各种奇怪的原因,它们需要支持劣质内存,这些劣等类型都不会留下这种工作的可能性(即使是不切实际的)。
说到mmap ......
如果您不提供文件掩码,APC使用匿名共享映射,则不能跨不同的进程边界共享它,这是不可能的。
如果你确实提供了文件掩码,APC使用了不同步的共享映射,尝试在不同的进程边界上共享它是没有意义的,因为它几乎总是包含映射内存的损坏阴影,&# 39;是不同步的本质。
没有为您提供APC尝试提供的任何非选项,所有映射都是匿名完成的。
使用理智的网络服务器,例如nginx / lighthttpd,并使用PHP附带的fpm
。
FPM的流程模型允许子进程处理它具有公共缓存,问题解决,适用于APC和Opcache。