php站点流量一旦上来,就可能导致服务器负载不太稳定,负载时不时会飙升好几倍甚至十几倍,访问就非常慢啦。而站点内的很多东西都可以进行缓存的,以wordpress为例,可以使用xcache做对象缓存扩展,memcached/redis做内存缓存。

一、XCache 简介

XCache 是一个国人开发的又快又稳定的 PHP opcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行。经过(在 linux 上)测试并支持所有现行 PHP 分支的最新发布版本。要了解更多信息,请访问官方文档:http://xcache.lighttpd.net/

二、安装 XCache

xcache目前最新版本是3.2 ,在使用rpm包安装时,其包含有两部分php-xcache 和 xcache-admin ,如下:

1[root@361way ~]# yum list|grep -i xcache
2php-xcache.x86_64                         3.0.4-1.el6                   @epel
3xcache-admin.noarch                       3.0.4-1.el6                   @epel

具体安装步骤这里略过,这里展示下安装完成后xcache admin的图形页面。访问 http://你的服务器IP/xcache/ 输入admin用户名和密码就可以登录管理界面:

php-xcache1

点击右上角的“诊断”,可以看到你目前的 Xcache 设置是否存在什么问题,而且给出了解释和建议,非常人性化。

php-xcache2

三、设置 XCache

Xcache 的设置选项在 php.ini 里,自动添加如下内容:

 1;xcache
 2[xcache-common]
 3extension = xcache.so
 4[xcache.admin]
 5xcache.admin.enable_auth = On
 6;默认的管理员用户名,你可以修改 admin 为其他用户名
 7xcache.admin.user = "admin"
 8;run: echo -n "yourpassword" |md5sum |awk '{print }' to get md5 password 以下是密码,就是安装时设置的(MD5加密)
 9xcache.admin.pass = "5ed1b644b258a5cc83"
10[xcache]
11xcache.shm_scheme =        "mmap"
12;对象缓存的大小,默认好像是20M,可能不够用,自己修改大些
13xcache.size  =               20M
14; set to cpu count (cat /proc/cpuinfo |grep -c processor)
15xcache.count =                 1
16xcache.slots =                8K
17xcache.ttl   =                 0
18xcache.gc_interval =           0
19;变量缓存大小,默认是 4M,一般的程序是没有用到这个缓存的,可以不理会
20xcache.var_size  =            4M
21xcache.var_count =             1
22xcache.var_slots =            8K
23xcache.var_ttl   =             0
24xcache.var_maxttl   =          0
25xcache.var_gc_interval =     300
26xcache.readonly_protection = Off
27; for *nix, xcache.mmap_path is a file path, not directory. (auto create/overwrite)
28; Use something like "/tmp/xcache" instead of "/dev/*" if you want to turn on ReadonlyProtection
29; different process group of php won't share the same /tmp/xcache
30xcache.mmap_path =    "/dev/zero"
31xcache.coredump_directory =   ""
32xcache.experimental =        Off
33xcache.cacher =               On
34xcache.stat   =               On
35xcache.optimizer =           Off
36[xcache.coverager]
37; enabling this feature will impact performance
38; enable only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"
39; enable coverage data collecting and xcache_coverager_start/stop/get/clean() functions
40xcache.coverager =          Off
41xcache.coveragedump_directory = ""
42;xcache end

我们一般就修改一下管理员用户名 xcache.admin.user 和 对象缓存大小 xcache.size 即可,当然,如果你使用了 XCache 的变量缓存,也可以进行相应设置 xcache.var_size 、xcache.var_slots 等。

更详细的设置说明,请看官方文档:http://xcache.lighttpd.net/wiki/XcacheIni

四、WordPress 使用 Xcache 进行变量缓存

Xcache 不仅可以缓存php,还可以缓存变量(类似于 Memcached),就是上面图中的 Var 缓存,对于 WordPress,只需要下载 https://wordpress.org/plugins/xcache/ 插件,解压后,将里面的 object-cache.php 上传到 wp-content 目录即可。

注意:

  • 如果你一个主机安装了多个 WordPress,请使用不通过的数据库表前缀,比如 wp_ 、wp2_ ,否则可能会导致变量冲突!
  • 如果你之前使用了 Memcached 进行变量缓存,请不要同时使用 Xcache 的变量缓存功能,两者选其一!!