Opcache算法如何工作?

时间:2013-11-20 08:39:52

标签: php opcache

我在服务器上启用了OPcache。它是一个共享托管服务器,为±30个网站提供服务。有2个高流量网站使用Symfony2。

OPcache是​​否足够智能,可以缓存到大多数高流量网站,而不是将其缓存填充到其他网站上,而不是那么重要的网站?

或者先来确定先服务?

1 个答案:

答案 0 :(得分:5)

不幸的是,关于操作码缓存的工作原理几乎缺乏体面的文档,但希望这很快就会进入PHP主流。与此同时,我做了这篇文章,应该有所帮助:The Zend Engine and opcode caching。请注意,这是我自己的实验分叉的wiki,但这个页面是纯OPcache。

就共享托管基础架构模板而言,操作码缓存通常很难提供这些模板,这可能有多种原因:

  • 大多数缓存(OPcache,APC,Xcache,...)使用共享内存缓存,当您将R / W SMA映射到进程空间时,实际上您将提供完整的R / W访问权限可以映射到它的任何进程。这意味着他们必须共享相同的安全域。对于共享主机而言,这是非常有问题的,其中主机提供商通常希望在单独的虚拟主机之间强制执行基于UID的分离。

  • 没有一个主流缓存提供替代(即非SMA)技术。我的MLC OPcache演示器使用基于文件的层而不是OPcache,这为本地OPcache的共享主机提供了约80%的性能改进,但我这个分支的目的不是设置与核心扩展相对立,而是将这些技术降低风险,以至于PHP会在某些时候将它们作为标准提供。

  • 我发现PHP开发人员对改进共享托管SAPI的兴趣不大。这种观点似乎主要是这样的观点,即如果应用程序托管商对性能感兴趣,那么他们应该简单地让自己成为VM并在其中运行专用的LAMP堆栈。

  • 但是,如果您在Apache下运行 mod_php5 ,那么启用OPcache很简单,对于大多数复杂的应用程序(如MediaWiki,Drupal和框架),通常会为您提供~2倍的吞吐量增加基于应用程序(Symphony2,Cake,...)

  • 对于~10 + vhost甜点,可以设置持久GCI / FastGCI模板( fpm 等)以使用具有每UID SMA的OPcache。虽然配置很困难。

很抱歉一般的答案,但你已经问了一般问题,没有更具体的细节,我无法给出更具体的答案。