构建 XCache 的基本步骤
在开始之前,首先确保 PHP 正常安装并核实 phpize 是否位于 shell 的 PATH 下。同时,还需要一个 C
编译器,例如 GNU Compiler Collection (GCC),和一组包含 make 和 m4 的开发工具。在 Mac OS X 上,免费的
Xcode 软件开发环境提供了必需的构建工具。
完成以下操作步骤,在 Mac OS X 上构建、部署 XCache 并对其进行性能检测。在其他平台上构建
XCache 与之类似。如果使用 Linux,则其发行版可能已经包含了 XCache 或者已经将其以预先打包好的格式提供给您。
增加 Mac OS X
的共享内存
首先增加 Mac OS X 上留出的共享内存总量。要实现这一目的,需创建(或编辑)文件 /etc/sysctl.conf 并创建如下条目:

清单 1. 增加 Mac OS X 上留出的共享内存总量

kern.sysv.shmmax=33554432

kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8

kern.sysv.shmall=8192

这些设置把共享内存总量增加到了 32 MB。如还需进一步扩展共享内存,可以把
kern.sysv.shmall 设定为 kern.sysv.shmmax 除以硬件页面大小。使用 sysctl hw.pagesize
能获得硬件页面大小。例如,假设需要 128 MB 的共享内存,那么设定 kern.sysv.shmmax=134217728 并设定
kern.sysv.shmall=32768。
重启 Mac OS X 使修改生效。重启后,检验新设置是否生效,键入:
sysctl -a |
grep kern.sysv

通过源代码构建 XCache
接下来,通过源代码构建 XCache。从
http://xcache.lighttpd.net 处下载源代码。下载完后解压代码,并转换到 .tar 文件创建的新目录。

清单 2.
通过源代码构建 XCache

$ cd /tmp
$ wget
http://210.51.190.228/pub/XCache/Releases/xcache-1.2.0.tar.gz
$ tar xzf
xcache-1.2.0.tar.gz
$ cd xcache

运行 phpize 为编译 XCache 做准备。

清单
3. 运行 phpize

$ phpize
Configuring for:
PHP Api Version:        
20020918
Zend Module Api No:      20020429
Zend Extension Api No:  
20050606

运行 configure,创建适合于原生操作系统的 makefile。

清单 4. 运行 configure
创建 makefile

$ ./configure --enable-xcache --enable-xcache-coverager

checking build system type... i686-apple-darwin8.8.1
checking host
system type... i686-apple-darwin8.8.1
...
creating libtool

configure: creating ./config.status
config.status: creating config.h

此处,--enable-xcache 选项包含 XCache 支持,--enable-xcache-coverager
选项包含用于测量加速器功效的附加特性。要启用操作码优化,添加 --enable-xcache-optimizer。
当然,下一步将使用 make
命令行构建和安装代码。运行 make,然后作为 root 用户运行 make install 。

清单 5. 利用 make 构建和安装代码

$ make
...
cp ./xcache.so
/Users/strike/tmp/xcache/modules/xcache.so
Build complete.

$ sudo
make install
Installing shared extensions:
/usr/lib/php/extensions/no-debug-non-zts-20020429/

如果上述两项操作顺利完成,那么
XCache 将位于 /usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so。(路径
/usr/lib/php/extensions/no-debug-non-zts-20020429 反映了正在使用的 API 版本和用于构建 PHP
的编译选项。如果启用了试用的 Zend Thread Safety 特性,则 "no-debug" 应为 "debug","non-zts" 应为
"zts"。)
修改 php.ini 文件
因为安装了扩展,所以必需修改 php.ini 文件,使之包含 XCache
扩展并对其进行配置。打开文件 /private/etc/php.ini,在其中添加如下代码行:

清单 6. 为 XCache 扩展修改
php.ini 文件

[xcache-common]
zend_extension      =
/usr/lib/php/extensions/no-debug-non-zts-20020429/xcache.so

[xcache.admin]
; Change xcache.admin.user to your preferred login
name
xcache.admin.user   = "admin"

; Change xcache.admin.pass to the
MD5 fingerprint of your password
; Use md5 -s "your_secret_password" to find
the fingerprint
xcache.admin.pass   = "0ad72f3f352fcd8acdf266bafd0ac48d"

[xcache]
; Change xcache.size to tune the size of the opcode cache

xcache.size         = 24M
xcache.shm_scheme   = "mmap"

xcache.count        = 2
xcache.slots        = 8K
xcache.ttl         
= 0
xcache.gc_interval  = 0

; Change xcache.var_size to adjust the
size of variable cache
xcache.var_size     = 8M
xcache.var_count    = 1

xcache.var_slots    = 8K
xcache.var_ttl      = 0
xcache.var_maxttl  
= 0
xcache.var_gc_interval =     300
xcache.test         = Off

xcache.readonly_protection = On
xcache.mmap_path    = "/tmp/xcache"

xcache.coredump_directory =   ""
xcache.cacher       = On

xcache.stat         = On
xcache.optimizer    = Off

[xcache.coverager]
xcache.coverager    = On

xcache.coveragedump_directory = ""

注意:为了简明起见,此处省略了一些注释。要了解每个参数的含义,请参阅 XCache 源代码中 xcache.ini 文件设置的例子。

操作码和变量缓存的大小是 32 MB,这是 /etc/rc 留出的最大值。对于 Mac OS X,xcache.mmap_path 必须为文件名。因为
PHP 代码将在 MacBook 上运行,所以 xcache.count 应设为 2,表示 MacBook 中 CPU 的数量。要访问 XCache
统计信息页面,需改变 xcache.admin.pass 设置。运行:
$ md5 -s "password"

此处 password
为您的密码。把输出复制给 xcache.admin.pass。例如,若需将密码设定为 op3nsesam3,可以运行:
$ md5 -s
"op3nsesam3"
MD5 ("op3nsesam3") = cd959ac3debe8f587546a3fa353b3268

然后把 cd959ac3debe8f587546a3fa353b3268 复制给 xcache.admin.pass。
重启 Web
服务器
设置好 XCache 后,重启 Apache Web 服务器。对于大多数系统,可以以 root 用户的身份使用 apachectl
restart 进行重启。
$ sudo apachectl restart
/usr/sbin/apachectl restart:
httpd restarted

创建程序以调用 phpinfo()
检验 XCache 是否已启用,需创建一个小型 PHP 程序用于调用
phpinfo() 并在 Web 浏览器中打开那个文件。这样就能看到类似下图的 XCache 版面。

图 1. phpinfo() 方法给出了
XCache 设置

监控 XCache
要监控 XCache,需安装 XCache 源代码的 admin
目录中的管理页面。把整个 admin 目录复制到 Apache 文档根目录下。通常来说,Mac OS X 中的文档根目录为
/Library/WebServer/Documents。
$ cp -pr admin /Library/WebServer/Documents

复制完成后,使用 sudo apachectl restart 重启 Web 服务器。用浏览器打开
http://localhost/admin,检验管理面板是否工作正常。请参阅类似图 2 的面板。

图 2. XCache
Administration 面板

测试应用程序

选择一个或两个应用程序进行测试。您可以使用自己的代码或者,如果想要更复杂一点,使用大型的 PHP 应用程序,例如 phpMyAdmin 或者
Serendipity。

最新文章

  1. eclipse 引用项目(转)
  2. malloc与kmalloc
  3. POJ 1979 Red and Black dfs 难度:0
  4. iOS 实现简单的Http 服务
  5. 【转】SQL Server T-SQL写文本文件
  6. While installing plugin in eclipse luna, “Unable to acquire PluginConverter service” and “No repository found” errors appear in logs
  7. 网页播放音频、视频文件——基于web的html 5的音乐播放器(转载)
  8. start stack
  9. 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
  10. @Autowired与 @Resource
  11. Java实现TFIDF算法
  12. 实际应用中遇到TimedRotatingFileHandler不滚动的问题
  13. html&css学习二
  14. height属性
  15. Confluence 6 用户宏示例 - NoPrint
  16. 配置web pack loader 报错:Module build failed: Error: The node API for `babel` has been moved to `babel-core`.
  17. Spring boot自定义启动字符画(banner)
  18. linux安装rabbitmq以及相关的操作命令
  19. 13-JS中的面向对象
  20. Linux上Java的安装与配置

热门文章

  1. 【hdu3579-Hello Kiki】拓展欧几里得-同余方程组
  2. CentOS下下删除大量文件
  3. Linux命令-sudo
  4. struts2不兼容servlet、COS
  5. Javascript performance
  6. LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)【转】
  7. Google 镜像站大集合
  8. Android HTTPS(4)直接用SSLSocket,黑名单,客户端证书
  9. Create Entity Data Model
  10. JSON 之 SuperObject(1)