Xcache和memcache选哪个好

快乐无极 , 2014/06/18 11:05 , 开发文档 » PHP , 评论(0) , 阅读(62317) , Via 本站原创 | |
memcache和 Xcache 是PHP的2个缓存工具。PHP5.5以来,自带有 Zend Opcache ,不过默认没启用。
这些缓存器的原理:
引用
把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知

然而Opcache 只自动缓存代码,它没有开放一个自定义缓存的API,要用到用户缓存的话还得用上Xcache或者memcache。
Xcache是中国人所做,看起来很牛叉,但是在实际应用中发现这个东西太不稳定了,光用它作代码缓存(后台自动缓存PHP代码),竟然有时候会使得整个PHP进程都当掉。然后也试了Xcache的用户缓存,API文档写得真够残的,好在还能用,但万没有想到,在fastcgi模式下,缓存命中率低得可怜,用和没用基本上差不多,明明缓存了,后一个请求过来一查却说没缓存,可能延时个几秒后才得知这个已经缓存了,才能取出缓存内容。这玩意到底仔细测试没有?我用的是3.1.0官方正式版Xcache在PHP 5.5 里作的测试,简直就是个废物!还记得以前在PHP5.2里面也用它过,莫名其妙的请求失败也时有出现。现在直接不敢再用……

相比这个XCache,memcache稳定得多。题外话:memcached和memcache又有点不同,memcached是memcache的守护进程,但是PHP中也有memcached的扩展。这两个说实话是让人头晕不知道是什么区别,其实我看来就是调用memcache的封装模式不太一样而已。具体哪些调用上的不同,参考 http://pecl.php.net/package/memcachehttp://pecl.php.net/package/memcached 。一看就知道memcached要多一些API函数调用,功能也更强大一些。而实际上基础应用的话memcache已经足够。

memcache的使用首先要有它的服务(也就是memcached进程)在跑,这个是一个小小的软件,一般是用C++编译,可以部署在与PHP同一台也可以不同,甚至可以分布式部署几个memcached服务在不同的服务器上。而PHP的memcached只是它的客户端而已。memcached本身没有PHP代码缓存功能,现升到PHP5.5后直接交给自带Opcache 了。一般用它作用户缓存。经过实际开发,memcached稳定性是非常高的,只要有缓存,命中率几乎在99%以上。PHP官方下提供了它的扩展可直接使用:http://pecl.php.net/package/memcache 连Windows版的DLL也直接在那里了,不用自己再编译。Windows下编译这些东西真是麻烦得很啦~

综上memcache更加稳定,推荐使用。Xcache真要用的话,还是老实在本地先测试一下再说。
此外,微软Windows下PHP可以使用Wincache,这个的稳定性没得说的,而且也不用守护进程。但是微软没能编译适用于PHP 64位的DLL。要想通用和跨平台,memcache是首选!!
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]