wiki:Faq.zh

Version 5 (modified by moo, 6 years ago) (diff)

Name changed from FaqZh? to Faq.zh

TracNav(DocTocZh)?

Frequently Asked Questions 常见问题

(这是 Faq 页面对应的中文翻译)

上哪寻求帮助?

IRC
freenode, 房间 #lighttpd (英文, 临时)
论坛
XCache 论坛.

为什么选择 XCache?

参考 XCache 介绍

./configure 在哪?

这个问题不错... 首先你得安装 php, 他能提供给你 "phpize" 可执行脚本, 您再执行

Error: Failed to load processor ShellExample
No macro or processor named 'ShellExample' found

如何从源代码安装 XCache?

参考 GettingSource, BuildingFromSource, InstallingAsPhpExtension

提示 "undefined symbol" (符号未声明) 怎么办?

重新编译 XCache, 您用的 php 可能与 xcache 编译时候对应的 php 版本不符合.

另外避免使用 --enable-versioning 来 configure 编译 php, 除非您知道您在干什么. php 官方提供的这个功能已经有问题. 如果实在需要 enable-versioning, 您可以把 XCache 编译为 php 的静态模.

使用大于 4M 的 cache 导致 Apache2 不断 coredump (segv faults)

php.ini 里设置 "xcache.readonly_protection = On"

提示 "Cannot dynamically load xcache.so"

如果您看到 PHP Warning: Unknown(): Cannot dynamically load xcache.so - dynamic modules are not supported in Unknown on line 0 提示, 那么您的操作系统并不支持动态库, 使用静态编译的办法来解决:

Error: Failed to load processor ShellExample
No macro or processor named 'ShellExample' found

为什么无论我如何增加 shm 大小, 我的 misses 总是 > 0?

"Misses" 是 "hits" 的反义词. 每当 cache 里没有需要的缓冲项目, 则记为 misses. 只有第一次 miss 后并且缓冲起来了, 以后访问缓冲才是算到 hits 头上. 所以至少 misses = count(cached-php).

为什么我的缓冲区定期被清空?

如果您使用 FastCGI, 启动 php-fcgi 之前应该将环境变量 PHP_FCGI_CHILDREN 设置为 1 或者更大值.

再参考下一条问题.

我发现管理页面的 "hits" 很神经, 数字跳来跳去/忽高忽低

这种现象很正常. 具体现象是: 第一次打开管理页面发现 hits=300,000, 但是第二次载入管理页面却是 hits=1 的三次可能又是 hits=312,456.

这是因为您启动了多组 php 实例, 他们之间并没有共享内存. 但请记住, 在一个组内母 php 管辖的所有子进程是可以保证使用同一个共享内存. 那么如何配置并检查确保只用了一个组呢?

检查:

正确示例

Error: Failed to load processor ShellExample
No macro or processor named 'ShellExample' found

错误示例

Error: Failed to load processor ShellExample
No macro or processor named 'ShellExample' found

配置参考:

救命啊! 一运行就提示 "XCache requires Zend Engine API version NNN"

XCache requires Zend Engine API version 220051025.
The Zend Engine API version 220060519 which is installed, is newer.
Contact mOo at http://xcache.lighttpd.net for a later version of 
XCache.

您手头上的 XCache 的"编译版本"太老了. 例如, 您的 XCache 在 php A 版本下进行编译 而后来您将 php 升级到 A+1 版本. 简单办法就是下载新编译的版本, 或者您自己重新编译.

xcache.so: undefined symbol: OnUpdateLong?

查阅上一条问题.

我看到有些文章介绍说启用 xcache.optimizer 设置可以获得更多的性能. 真的吗 ?

目前 1.x 版本只支持 "cacher" 和 "coverager" 模块, 经过严格测试并已证明能正确工作. 目前 "optimizer" 没有 起任何作用, 这个功能目前只在 XCache 2.x 里有, 现在只是个雏型阶段.