我相信您使用 lighttpd 是因为它卓越的性能和可扩展性,而且你们中的许多人也在运行 PHP。我很高兴向您介绍另一个 PHP 操作码缓存。
是的,又一个。
预览版已弃用。请访问 //trac.lighttpd.net/xcache/wiki/GettingSource 获取更新的源代码。
并在 //trac.lighttpd.net/xcache/newticket 报告问题
介绍
我自己用过 apc、mmcache/ea、ZendOptimizer,它们是 xcache 之前仅有的 3 种选择。ab cache 太旧且已停用,可悲的是,在我使用它之前它就停用了。每个编写 PHP 脚本的人都认识它们,并且都使用过其中之一来提升你的 PHP 性能,因为它们很好用。
但“什么?你为什么又介绍一个操作码缓存器?”这需要一些时间来解释……短期来看:它为你提供了多一个选择。长期来看:mmcache/ea 是优化最好的 PHP 操作码缓存。ZendOptimizer 并非在所有平台上都预构建——它们发布的是二进制文件而非源代码。apc 在 PHP4 上很稳定,但在 PHP5 上不兼容,现在,据说兼容 PHP5 但 PHP4 被遗弃了……
xcache 的亮点
- 缓存器,与其他操作码缓存类似。
- 操作码反汇编器,用于查看您的脚本在编译成操作码后的样子。
- 随着 PHP 的发展而发展,通过开发人员的自动化发现方案,xcache 的新更改可以轻松地跟上新 PHP 版本。
- 稳定支持 PHP4.x 最新版,PHP5.x 最新版正常工作,支持 PHP6-devel 以供您未来展望。
- 还有更多……
脚本的新功能
$ grep proto *.c
mixed xcache_get(string name)
bool xcache_set(string name, mixed value [, int ttl])
mixed xcache_isset(string name)
bool xcache_unset(string name)
int xcache_inc(string name [, int value [, int ttl]])
int xcache_dec(string name [, int value [, int ttl]])
其他协议需要记录。
如何安装
$ wget //blog.lighttpd.ac.cn/files/xcache-preview.tar.gz
$ tar -zxf xcache-preview.tar.gz
$ cd xcache-preview
$ phpize
$ cat ./conf
$ ./configure --help
$ ./configure --enable-xcache-disassembler
$ make
$ su
# make install
注意 make install 的输出,将以下内容追加到 php.ini
[xcache]
xcache.size = 64M
xcache.mmap_path = "/tmp/xcache"
xcache.cacher = 1
zend_extension="/usr/.../extensions/..../xcache.so"
# or
extension="xcache.so"
测试
重启你的 PHP (fastcgi 或 mod_php),检查 <?php phpinfo() ?> 输出以查看 xcache 状态。如果看到了,就完成了。
最后测试操作码转储器
$ ./phpdop.phpr ./phpdop.phpr
$ ./phpdc.phpr ./phpdc.phpr
加固源代码的补丁(未测试)
Index: processor.m4
===================================================================
--- processor.m4 (revision 27)
+++ processor.m4 (working copy)
@@ -575,6 +575,9 @@
/* reserved */
DONE(reserved)
+ #if defined(HARDENING_PATCH) && HARDENING_PATCH
+ DISPATCH(zend_bool, created_by_eval)
+ #endif
} while (0);
')
dnl }}}
建议直接修改 processor/processor.m4,因为博客中可能会丢失空格。