当apc.serializer = default时,启用OPcache会中断APC

时间:2016-03-09 11:48:56

标签: php web-applications apc opcache igbinary

我最近遇到了一些奇怪的事情,我在google搜索时找不到任何解释。

设置:我们正在使用APC

我们正在使用APC(3.1.15-dev)作为PHP(v5.5.10)Web应用程序的第一级用户数据缓存。 APC操作码缓存已禁用。 我们也有class A(val n: Int) { def +(other: A) = new A(n + other.n) } object A { implicit def fromMyInt(n: Int) = new A(n) } val r = 1 + new A(1) println( r ) (这个设置很重要)。

挑战:我们要启用OPcache

不幸的是,在启用OPcache时,APC缓存在尝试保存值时会遇到问题。

解决方案:为APC指定序列化程序

apc.serializer = default

更改此设置时,APC会再次开始正常工作。

问题:发生了什么事?

虽然我们解决了这个问题,但我想更好地理解这个问题以及导致这个问题的原因。

在指定igbinary之前,我不确定哪个序列化程序被用作APC的默认值,但我可以看出它是否重要。

OPcache是​​否会以某种方式更改默认序列化程序?

知道发生了什么事吗?来自社区的任何见解都将受到高度赞赏: - )

1 个答案:

答案 0 :(得分:0)

PHP 5.5.x无法使用APC。你需要使用APCu。见下文:

  

PHP版本:适用于PHP 5.4以上的所有PHP版本(3.1.13 - beta版本)
  最新测试版:3.1.13(2012-09-03)
  最新稳定版:3.1.9(2011-05-14)
  状态:休眠,可能死亡(自2012年9月以来没有新版本)

source