1
0
Fork 0

fixed #39: ini_set never work for xcache.coverager setting

git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1117 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
This commit is contained in:
Xuefer 2012-08-02 06:27:41 +00:00
parent a7bf25186f
commit 01b891c66a
5 changed files with 20 additions and 12 deletions

View File

@ -7,12 +7,14 @@ API Changes
Ini Settings Changes
========
* new: xcache.disable_on_crash = Off
* new: xcache.coverager_autostart = On
ChangeLog
========
* closes #2: auto disable caching on crash
* closes #73: warn for improper PHP_FCGI_CHILDREN setting fcgi mode (>=PHP_5_3)
* closes #174: updated api to support "clear all cache"
* fixed #39: ini_set never work for xcache.coverager setting. use API instead
* code refactor
* uses extension to load XCache. load via zend_extension is unsupported
* split XCache features into multiple sub modules

View File

@ -244,19 +244,21 @@ static void xc_coverager_cleanup(TSRMLS_D) /* {{{ */
static void xc_coverager_enable(TSRMLS_D) /* {{{ */
{
XG(coverage_enabled) = 1;
XG(coverager_enabled) = 1;
}
/* }}} */
static void xc_coverager_disable(TSRMLS_D) /* {{{ */
{
XG(coverage_enabled) = 0;
XG(coverager_enabled) = 0;
}
/* }}} */
static PHP_RINIT_FUNCTION(xcache_coverager) /* {{{ */
{
if (XG(coverager)) {
xc_coverager_enable(TSRMLS_C);
if (XG(coverager_autostart)) {
xc_coverager_enable(TSRMLS_C);
}
#ifdef ZEND_COMPILE_EXTENDED_INFO
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
#else
@ -264,7 +266,7 @@ static PHP_RINIT_FUNCTION(xcache_coverager) /* {{{ */
#endif
}
else {
XG(coverage_enabled) = 0;
XG(coverager_enabled) = 0;
}
return SUCCESS;
}
@ -468,7 +470,7 @@ static void xc_coverager_handle_ext_stmt(zend_op_array *op_array, zend_uchar op)
{
TSRMLS_FETCH();
if (XG(coverages) && XG(coverage_enabled)) {
if (XG(coverages) && XG(coverager_enabled)) {
int size = xc_coverager_get_op_array_size_no_tail(op_array);
int oplineno = (*EG(opline_ptr)) - op_array->opcodes;
if (oplineno < size) {
@ -630,7 +632,8 @@ static zend_extension xc_coverager_zend_extension_entry = {
/* }}} */
/* {{{ PHP_INI */
PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN("xcache.coverager" , "0", PHP_INI_ALL, OnUpdateBool, coverager, zend_xcache_globals, xcache_globals)
STD_PHP_INI_BOOLEAN("xcache.coverager", "0", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, coverager, zend_xcache_globals, xcache_globals)
STD_PHP_INI_BOOLEAN("xcache.coverager_autostart", "1", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, coverager_autostart, zend_xcache_globals, xcache_globals)
PHP_INI_ENTRY1 ("xcache.coveragedump_directory", "", PHP_INI_SYSTEM, xcache_OnUpdateDummy, NULL)
PHP_INI_END()
/* }}} */
@ -643,7 +646,7 @@ static PHP_MINFO_FUNCTION(xcache_coverager) /* {{{ */
if (cfg_get_string("xcache.coveragedump_directory", &covdumpdir) != SUCCESS || !covdumpdir[0]) {
covdumpdir = NULL;
}
php_info_print_table_row(2, "Coverage Auto Dumper", XG(coverager) && covdumpdir ? "enabled" : "disabled");
php_info_print_table_row(2, "Coverage Started", XG(coverager_started) && covdumpdir ? "On" : "Off");
php_info_print_table_end();
DISPLAY_INI_ENTRIES();

View File

@ -64,11 +64,12 @@ xcache.optimizer = Off
[xcache.coverager]
; 本功能开启后降低运行性能
; 在 xcache.coverager == On && xcache.coveragedump_directory == "非空值" 时本功能才会启用
; 在 xcache.coverager == On && xcache.coveragedump_directory == "非空值" 时本功能才会启用
; per request settings. 可以 ini_set, .htaccess 等
; 启用代码流程覆盖面信息采集以及 xcache_coverager_start/stop/get/clean() 等函数
xcache.coverager = Off
xcache.coverager = Off
xcache.coverager_autostart = On
; 仅在 php ini 文件内设置
; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir)

View File

@ -64,11 +64,12 @@ xcache.optimizer = Off
[xcache.coverager]
; enabling this feature will impact performance
; enable only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"
; enabled only if xcache.coverager == On && xcache.coveragedump_directory == "non-empty-value"
; per request settings. can ini_set, .htaccess etc
; enable coverage data collecting and xcache_coverager_start/stop/get/clean() functions
xcache.coverager = Off
xcache.coverager = Off
xcache.coverager_autostart = On
; set in php ini file only
; make sure it's readable (open_basedir is checked) by coverage viewer script

View File

@ -10,7 +10,8 @@ ZEND_BEGIN_MODULE_GLOBALS(xcache)
#endif
#ifdef HAVE_XCACHE_COVERAGER
zend_bool coverager;
zend_bool coverage_enabled;
zend_bool coverager_autostart;
zend_bool coverager_enabled;
HashTable *coverages; /* coverages[file][line] = times */
#endif
xc_stack_t *php_holds;