我有一个安装了Memcache的Drupal 7网站,它在Apache2 Web服务器上运行良好。现在我已经用HHVM(HipHop)替换了Apache2,并且在性能上得到了真正的提升。
问题是显然Drupal无法与Memcache服务器交互。这是错误:
Notice: Use of undefined constant MEMCACHE_COMPRESSED - assumed 'MEMCACHE_COMPRESSED' in dmemcache_set() (line 44 of /.../modules/memcache/dmemcache.inc).
当然没有任何内容存储在Memcache中。
我认为Drupal的Memcache模块正在使用PECL的Memcache:set()
,这在新安装的HHVM中不可用。 HHVM是否有类似PECL的安装?
由于
答案 0 :(得分:1)
PECL扩展不太可能与HHVM兼容,但是"纯PHP"实现可能仍然有效。它会比用C语言编写的东西慢,但缓存的好处可能会超过原始速度的任何缺点。
有人已经建议Drupal应该包含一个纯PHP实现,以防Memcache / Memcached扩展不可用。该建议包括一些替代方案的链接,因此请查看它们:
https://drupal.org/node/1999804
我快速浏览了the first link,不幸的是,方法和常量似乎与PECL扩展100%兼容。但是你可以扩展类,添加一些缺少的常量,并改变参数的顺序以匹配PECL扩展的方法。