wiki:PhpIni.zh
close Warning: Can't synchronize with repository "(default)" (Unsupported version control system "svn": libapr-1.so.0: failed to map segment from shared object: Cannot allocate memory). Look in the Trac log for more information.

Version 3 (modified by moo, 7 years ago) (diff)

Name changed from PhpIniZh? to PhpIni.zh

TracNav

XCache and php.ini

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

本页内, 我们将尝试向您解释应该把 XCache 配置放在哪里 (也就是如何定位 php.ini), 以及 XCache 有哪些设置.

定位 php.ini

定位 php.ini 非常之简单, 只需要简单编写一个 phpinfo() 页面并在浏览器里查阅, 又快又准. 路径一般一般在 /etc/php.ini or /usr/local/lib/php.ini /usr/lib/php.ini c:\windows\php.ini c:\winnt\php.ini.

SAPI 特定 ini

PHP 也会扫描 SAPI 特定的 ini 路径. 首先是 php-{$sapi}.ini 的格式, 然后才是常规的 php.ini. 例如:

SAPI位置
cgi/etc/php-cgi.ini(如果 configure 没有启用 fastcgi)
cgi-fcgi/etc/php-cgi-fcgi.ini(如果 configure 没有启用 fastcgi)
cli/etc/php-cli.ini

如果您想针对不同的 SAPI 使用不同的 php.ini, 使用 SAPI 对应的 ini 名字将是不错的实现办法.

独立的 ini

这取决于您或者其他负责配置编译 php 的人. 也就是说, 如果你的 php 配置编译为

$ ./configure --with-config-file-scan-dir=/etc/php/
$ make
....

那么编译出来的 php 首先会扫描 /etc/php/ 内 *.ini, 并且使用里面 所有 的 ini 作为 php-{$sapi}.ini or php.ini 之外附加的设置. 所以您也可以将自定义完的 xcache.ini 放入那个目录里, 不过没法针对不同的 SAPI, 除非不同 SAPI 版本的 php 使用不同的 with-config-file-scan-dir 路径.

如果您不知道这个路径是什么, 可以检查 phpinfo() (真是个万能钥匙 :)

XCache 的 INI 配置

终于到了解释 xcache.ini 的时候了, 不管你有没有上面的基础知识.

载入 XCache 模块

;; 安装成 zend extension (推荐), 路径一般是 "$extension_dir/xcache.so"
zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so
;; Windows 系统例子:
zend_extension_ts = c:/php/extensions/php_xcache.dll
;; 或者您也可把 XCache 安装成 extension, 注意确保您的 extension_dir 设置正确, 并
把 xcache.so 或者 php_xcache.dll 放到该目录里面
; extension = xcache.so
;; 或者 Win32 系统:
; extension = php_xcache.dll

XCache Administration

NameDefaultChangeable
xcache.admin.user"mOo"PHP_INI_SYSTEM
xcache.admin.pass""PHP_INI_SYSTEM
xcache.testOffPHP_INI_SYSTEM
xcache.coredump_directory""PHP_INI_SYSTEM
xcache.admin.user string
验证名.
xcache.admin.pass string
md5 后的验证密码, 亦即 md5(您的密码), 留空则禁用管理页面.
xcache.test string
仅在测试一些功能的时候才启用. 如果您不知道这个功能的作用, 则您不需要知道.
xcache.coredump_directory string
设置在 crash (SIGSEGV/SIGABRT) 时保存 core dump 文件的路径. 留空则禁止, 或者设置为类似 "/tmp/phpcore/" 的目录. 确保这个路径可以被 php 写入文件. (与 open_basedir 无关).

XCache Cacher

NameDefaultChangeable
xcache.cacherOnPHP_INI_SYSTEM
xcache.size0PHP_INI_ALL
xcache.count1PHP_INI_SYSTEM
xcache.slots8KPHP_INI_SYSTEM
xcache.ttl0PHP_INI_SYSTEM
xcache.gc_interval0PHP_INI_SYSTEM
xcache.var_size0PHP_INI_SYSTEM
xcache.var_count1PHP_INI_SYSTEM
xcache.var_slots8KPHP_INI_SYSTEM
xcache.var_ttl0PHP_INI_ALL
xcache.var_maxttl0PHP_INI_SYSTEM
xcache.var_gc_interval300PHP_INI_SYSTEM
xcache.readonly_protectionOffPHP_INI_SYSTEM
xcache.mmap_path"/dev/zero"PHP_INI_SYSTEM
xcache.cacher boolean
使用/不使用 opcode 缓冲器. xcache.size = 0 时无效.
xcache.size int
0 禁止, 非 0 则启用缓冲器. 请注意您系统所允许的 mmap 最大值.
xcache.count int
指定将 cache 切分成多少块. 参考 SplittedCache
xcache.slots size
只是作为 hash 槽个数的参考值, 您可以放心地缓冲超过这个个数的项目.
xcache.ttl seconds
设置缓冲项目的 Ttl (Time To Live) 值, 0=永不过期.
xcache.gc_interval seconds
检查过期项目, 回收内存空间的间隔.
xcache.var_size int
xcache.var_count int
xcache.var_slots size
xcache.var_gc_interval seconds
同上, 不过用于数据缓冲而不是 opcode 缓冲.
xcache.var_ttl seconds
xcache_(get|set|inc|dec) 等的默认 ttl 值.
xcache.var_maxttl seconds
最大 ttl 值, 程序无法指定超过这个最大值的 ttl.
xcache.readonly_protection boolean
如果启用了 ReadonlyProtection, 将会略微降低性能, 但是会提高一定的安全系数. 这个选项对于 xcache.mmap_path = /dev/zero 无效.
xcache.mmap_path string
对于 *nix, xcache.mmap_path 是 文件路径, 不是目录. 对于 Win32, xcache.mmap_path 只是匿名的 map 名, 不是实际的文件路径. 如果您要启用 ReadonlyProtection 请用类似 "/tmp/xcache" 的路径. 2 组 php 不该共用同一个路径 (/dev/zero 除外).

XCache Optimizer

NameDefaultChangeable
xcache.optimizerOffPHP_INI_ALL
xcache.optimizer boolean
启用优化器 (目前无效).

XCache Coverager

NameDefaultChangeable
xcache.coveragerOffPHP_INI_ALL
xcache.coveragedump_directory"/tmp/pcov/"PHP_INI_SYSTEM
xcache.coverager boolean
Enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
xcache.coveragedump_directory string
Directory to dump coverage data. Make sure it's readable (care open_basedir) by coverage viewer script. Requires xcache.coverager=On