wiki:PhpIni.zh

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

--

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