From: Andrey Hristov Date: Mon, 16 Nov 2015 15:23:39 +0000 (+0100) Subject: mysqlnd refactoring: X-Git-Tag: php-7.1.0alpha1~740 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4173bd15c0860a2d9f6a6b0c4844e939b98d523;p=php mysqlnd refactoring: - reorganize the statistics code a bit. There is one mysqlnd specific function, for convenience, in mysqlnd_statistics.c - namelyu _mysqlnd_get_client_stats(). The mysqlnd specific stats macros are moved to mysqlnd.h to keep mysqlnd_statistics.h from being mysqlnd specific. --- diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index ab6955c347..5f794664e7 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -111,7 +111,7 @@ PHPAPI void mysqlnd_debug(const char *mode); #define mysqlnd_fetch_all(result, flags, return_value) (result)->m.fetch_all((result), (flags), (return_value) ZEND_FILE_LINE_CC) #define mysqlnd_result_fetch_field_data(res,offset,ret) (res)->m.fetch_field_data((res), (offset), (ret)) #define mysqlnd_get_connection_stats(conn, values) ((conn)->data)->m->get_statistics((conn)->data, (values) ZEND_FILE_LINE_CC) -#define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats((values) ZEND_FILE_LINE_CC) +#define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats(mysqlnd_global_stats, (values) ZEND_FILE_LINE_CC) #define mysqlnd_close(conn,is_forced) (conn)->m->close((conn), (is_forced)) #define mysqlnd_query(conn, query_str, query_len) ((conn)->data)->m->query((conn)->data, (query_str), (query_len)) @@ -257,7 +257,50 @@ PHPAPI zend_ulong mysqlnd_old_escape_string(char * newstr, const char * escapest /* Performance statistics */ -PHPAPI void _mysqlnd_get_client_stats(zval *return_value ZEND_FILE_LINE_DC); +PHPAPI extern MYSQLND_STATS * mysqlnd_global_stats; +PHPAPI extern const MYSQLND_STRING mysqlnd_stats_values_names[]; +PHPAPI void _mysqlnd_get_client_stats(MYSQLND_STATS * stats, zval *return_value ZEND_FILE_LINE_DC); + + +#ifndef MYSQLND_CORE_STATISTICS_DISABLED + +#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ + MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)) + +#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ + MYSQLND_DEC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)) + +#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) \ + MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2)) + +#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ + MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)); \ + MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), (conn_stats), (statistic)); + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ + MYSQLND_INC_STATISTIC_W_VALUE(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic), (value)); \ + MYSQLND_INC_STATISTIC_W_VALUE(MYSQLND_G(collect_statistics), (conn_stats), (statistic), (value)); + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) \ + MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2)); \ + MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), (conn_stats), (statistic1), (value1), (statistic2), (value2)); + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ + MYSQLND_INC_STATISTIC_W_VALUE3(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2), (statistic3), (value3)); \ + MYSQLND_INC_STATISTIC_W_VALUE3(MYSQLND_G(collect_statistics), (conn_stats), (statistic1), (value1), (statistic2), (value2), (statistic3), (value3)); + +#else + +#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) +#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) +#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) +#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) + +#endif /* MYSQLND_CORE_STATISTICS_DISABLED */ + /* double check the class name to avoid naming conflicts when using these: */ #define MYSQLND_METHOD(class, method) mysqlnd_##class##_##method##_pub diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index bbd2eb0643..247e627ef2 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -208,25 +208,9 @@ mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, const MYSQLND_STRING /* }}} */ -/* {{{ _mysqlnd_get_client_stats */ -PHPAPI void -_mysqlnd_get_client_stats(zval *return_value ZEND_FILE_LINE_DC) -{ - MYSQLND_STATS stats, *stats_ptr = mysqlnd_global_stats; - DBG_ENTER("_mysqlnd_get_client_stats"); - if (!stats_ptr) { - memset(&stats, 0, sizeof(stats)); - stats_ptr = &stats; - } - mysqlnd_fill_stats_hash(stats_ptr, mysqlnd_stats_values_names, return_value ZEND_FILE_LINE_CC); - DBG_VOID_RETURN; -} -/* }}} */ - - /* {{{ mysqlnd_stats_init */ PHPAPI void -mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count, int persistent) +mysqlnd_stats_init(MYSQLND_STATS ** stats, const size_t statistic_count, const zend_bool persistent) { *stats = pecalloc(1, sizeof(MYSQLND_STATS), persistent); if (*stats == NULL) { @@ -245,7 +229,7 @@ mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count, int persisten /* {{{ mysqlnd_stats_end */ PHPAPI void -mysqlnd_stats_end(MYSQLND_STATS * stats, int persistent) +mysqlnd_stats_end(MYSQLND_STATS * stats, const zend_bool persistent) { #ifdef ZTS tsrm_mutex_free(stats->LOCK_access); @@ -291,6 +275,25 @@ mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats) /* }}} */ +/************ MYSQLND specific code **********/ + +/* {{{ _mysqlnd_get_client_stats */ +PHPAPI void +_mysqlnd_get_client_stats(MYSQLND_STATS * stats_ptr, zval *return_value ZEND_FILE_LINE_DC) +{ + MYSQLND_STATS stats; + DBG_ENTER("_mysqlnd_get_client_stats"); + if (!stats_ptr) { + memset(&stats, 0, sizeof(stats)); + stats_ptr = &stats; + } + mysqlnd_fill_stats_hash(stats_ptr, mysqlnd_stats_values_names, return_value ZEND_FILE_LINE_CC); + DBG_VOID_RETURN; +} +/* }}} */ + + + /* * Local variables: * tab-width: 4 diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h index 6caf7fab99..ca8ca8d9ee 100644 --- a/ext/mysqlnd/mysqlnd_statistics.h +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -19,10 +19,6 @@ #ifndef MYSQLND_STATISTICS_H #define MYSQLND_STATISTICS_H -PHPAPI extern MYSQLND_STATS * mysqlnd_global_stats; - -extern const MYSQLND_STRING mysqlnd_stats_values_names[]; - #ifdef ZTS #define MYSQLND_STATS_LOCK(stats) tsrm_mutex_lock((stats)->LOCK_access) #define MYSQLND_STATS_UNLOCK(stats) tsrm_mutex_unlock((stats)->LOCK_access) @@ -113,50 +109,11 @@ extern const MYSQLND_STRING mysqlnd_stats_values_names[]; -#ifndef MYSQLND_CORE_STATISTICS_DISABLED - -#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ - MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)) - -#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ - MYSQLND_DEC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)) - -#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) \ - MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2)) - -#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ - MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic)); \ - MYSQLND_INC_STATISTIC(MYSQLND_G(collect_statistics), (conn_stats), (statistic)); - -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ - MYSQLND_INC_STATISTIC_W_VALUE(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic), (value)); \ - MYSQLND_INC_STATISTIC_W_VALUE(MYSQLND_G(collect_statistics), (conn_stats), (statistic), (value)); - -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) \ - MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2)); \ - MYSQLND_INC_STATISTIC_W_VALUE2(MYSQLND_G(collect_statistics), (conn_stats), (statistic1), (value1), (statistic2), (value2)); - -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ - MYSQLND_INC_STATISTIC_W_VALUE3(MYSQLND_G(collect_statistics), mysqlnd_global_stats, (statistic1), (value1), (statistic2), (value2), (statistic3), (value3)); \ - MYSQLND_INC_STATISTIC_W_VALUE3(MYSQLND_G(collect_statistics), (conn_stats), (statistic1), (value1), (statistic2), (value2), (statistic3), (value3)); - -#else - -#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) -#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) -#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) -#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) - -#endif /* MYSQLND_CORE_STATISTICS_DISABLED */ +PHPAPI void mysqlnd_stats_init(MYSQLND_STATS ** stats, const size_t statistic_count, const zend_bool persistent); +PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats, const zend_bool persistent); PHPAPI void mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, const MYSQLND_STRING * names, zval *return_value ZEND_FILE_LINE_DC); -PHPAPI void mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count, int persistent); -PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats, int persistent); - PHPAPI mysqlnd_stat_trigger mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger); PHPAPI mysqlnd_stat_trigger mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats);