diff options
| author | Andrey Hristov <andrey@php.net> | 2007-08-03 16:32:27 +0000 |
|---|---|---|
| committer | Andrey Hristov <andrey@php.net> | 2007-08-03 16:32:27 +0000 |
| commit | 7186530157850f812293474f2bb5c37af94d6e6c (patch) | |
| tree | 3b521aab5920faf623ae44e56d42e9b00bd8f05d /ext/mysqlnd/mysqlnd.c | |
| parent | 77701c003a0afa77a8f76bb0a94a7989f8529848 (diff) | |
| download | php-git-7186530157850f812293474f2bb5c37af94d6e6c.tar.gz | |
Update CVS
- Fix BIT problem for BIT values represented with 5 bytes. Typo.
- Make it possible with an ini variable to switch off/on statistics
collection.
- Compile-out debug checking of uneaten data from the line, when the
build is release. According to callgrind this was eating some percentage.
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
| -rw-r--r-- | ext/mysqlnd/mysqlnd.c | 93 |
1 files changed, 63 insertions, 30 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index b776339219..51abeafbb3 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -67,31 +67,37 @@ const char * mysqlnd_out_of_sync = "Commands out of sync; you can't run this com MYSQLND_STATS *mysqlnd_global_stats = NULL; static zend_bool mysqlnd_library_initted = FALSE; - /* {{{ mysqlnd_library_init */ -PHPAPI void mysqlnd_library_init() +static +void mysqlnd_library_init(zend_bool collect_statistics) { if (mysqlnd_library_initted == FALSE) { mysqlnd_library_initted = TRUE; _mysqlnd_init_ps_subsystem(); - mysqlnd_global_stats = calloc(1, sizeof(MYSQLND_STATS)); + if (collect_statistics) { + mysqlnd_global_stats = calloc(1, sizeof(MYSQLND_STATS)); + #ifdef ZTS - mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); + mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); #endif + } } } /* }}} */ /* {{{ mysqlnd_library_end */ -PHPAPI void mysqlnd_library_end() +static +void mysqlnd_library_end() { if (mysqlnd_library_initted == TRUE) { + if (mysqlnd_global_stats) { #ifdef ZTS - tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); + tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); #endif - free(mysqlnd_global_stats); - mysqlnd_global_stats = NULL; + free(mysqlnd_global_stats); + mysqlnd_global_stats = NULL; + } mysqlnd_library_initted = FALSE; } } @@ -1554,26 +1560,6 @@ static zend_function_entry mysqlnd_functions[] = { /* }}} */ -/* {{{ PHP_MINIT_FUNCTION - */ -PHP_MINIT_FUNCTION(mysqlnd) -{ - mysqlnd_library_init(); - return SUCCESS; -} -/* }}} */ - - -/* {{{ PHP_MSHUTDOWN_FUNCTION - */ -PHP_MSHUTDOWN_FUNCTION(mysqlnd) -{ - mysqlnd_library_end(); - return SUCCESS; -} -/* }}} */ - - /* {{{ mysqlnd_minfo_print_hash */ #if PHP_MAJOR_VERSION >= 6 PHPAPI void mysqlnd_minfo_print_hash(zval *values) @@ -1654,10 +1640,53 @@ PHP_MINFO_FUNCTION(mysqlnd) /* }}} */ +ZEND_DECLARE_MODULE_GLOBALS(mysqlnd) + +/* {{{ PHP_GINIT_FUNCTION + */ +static PHP_GINIT_FUNCTION(mysqlnd) +{ + mysqlnd_globals->collect_statistics = FALSE; +} +/* }}} */ + + +/* {{{ PHP_INI_BEGIN +*/ +PHP_INI_BEGIN() + STD_PHP_INI_BOOLEAN("mysqlnd.collect_statistics", "1", PHP_INI_SYSTEM, OnUpdateBool, collect_statistics, zend_mysqlnd_globals, mysqlnd_globals) +PHP_INI_END() +/* }}} */ + + +/* {{{ PHP_MINIT_FUNCTION + */ +PHP_MINIT_FUNCTION(mysqlnd) +{ + REGISTER_INI_ENTRIES(); + + mysqlnd_library_init(MYSQLND_G(collect_statistics)); + return SUCCESS; +} +/* }}} */ + + +/* {{{ PHP_MSHUTDOWN_FUNCTION + */ +PHP_MSHUTDOWN_FUNCTION(mysqlnd) +{ + mysqlnd_library_end(); + + UNREGISTER_INI_ENTRIES(); + return SUCCESS; +} +/* }}} */ + + /* {{{ mysqlnd_module_entry */ zend_module_entry mysqlnd_module_entry = { - STANDARD_MODULE_HEADER, + STANDARD_MODULE_HEADER, "mysqlnd", mysqlnd_functions, PHP_MINIT(mysqlnd), @@ -1666,7 +1695,11 @@ zend_module_entry mysqlnd_module_entry = { NULL, PHP_MINFO(mysqlnd), MYSQLND_VERSION, - STANDARD_MODULE_PROPERTIES + PHP_MODULE_GLOBALS(mysqlnd), + PHP_GINIT(mysqlnd), + NULL, + NULL, + STANDARD_MODULE_PROPERTIES_EX }; /* }}} */ |
