diff options
author | Aaron Piotrowski <aaron@trowski.com> | 2016-06-10 22:02:23 -0500 |
---|---|---|
committer | Aaron Piotrowski <aaron@trowski.com> | 2016-06-10 22:02:23 -0500 |
commit | e3c681aa5cc71122a8d2fae42e6513fc413ccac8 (patch) | |
tree | 5f1df62f7b666028edb0ee1adf083a52d63df45a /ext/mysqlnd/mysqlnd_statistics.c | |
parent | fb4e3085cbaa76eb8f28eebf848a81d1c0190067 (diff) | |
parent | 792e89385ca6fc722a03590722eb7745a2374720 (diff) | |
download | php-git-e3c681aa5cc71122a8d2fae42e6513fc413ccac8.tar.gz |
Merge branch 'master' into throw-error-in-extensions
Diffstat (limited to 'ext/mysqlnd/mysqlnd_statistics.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd_statistics.c | 69 |
1 files changed, 36 insertions, 33 deletions
diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c index f550948035..7f12a72511 100644 --- a/ext/mysqlnd/mysqlnd_statistics.c +++ b/ext/mysqlnd/mysqlnd_statistics.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 7 | +----------------------------------------------------------------------+ - | Copyright (c) 2006-2015 The PHP Group | + | Copyright (c) 2006-2016 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -12,13 +12,12 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Georg Richter <georg@mysql.com> | - | Andrey Hristov <andrey@mysql.com> | - | Ulf Wendel <uwendel@mysql.com> | + | Authors: Andrey Hristov <andrey@php.net> | + | Ulf Wendel <uw@php.net> | + | Georg Richter <georg@php.net> | +----------------------------------------------------------------------+ */ -/* $Id$ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_priv.h" @@ -26,9 +25,7 @@ #include "mysqlnd_debug.h" -/* {{{ mysqlnd_stats_values_names - */ - +/* {{{ mysqlnd_stats_values_names */ const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { { MYSQLND_STR_W_LEN("bytes_sent") }, @@ -114,8 +111,10 @@ const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { MYSQLND_STR_W_LEN("mem_free_amount") }, { MYSQLND_STR_W_LEN("mem_estrndup_count") }, { MYSQLND_STR_W_LEN("mem_strndup_count") }, - { MYSQLND_STR_W_LEN("mem_estndup_count") }, + { MYSQLND_STR_W_LEN("mem_estrdup_count") }, { MYSQLND_STR_W_LEN("mem_strdup_count") }, + { MYSQLND_STR_W_LEN("mem_edupl_count") }, + { MYSQLND_STR_W_LEN("mem_dupl_count") }, { MYSQLND_STR_W_LEN("proto_text_fetched_null") }, { MYSQLND_STR_W_LEN("proto_text_fetched_bit") }, { MYSQLND_STR_W_LEN("proto_text_fetched_tinyint") }, @@ -153,6 +152,7 @@ const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { MYSQLND_STR_W_LEN("proto_binary_fetched_datetime") }, { MYSQLND_STR_W_LEN("proto_binary_fetched_timestamp") }, { MYSQLND_STR_W_LEN("proto_binary_fetched_string") }, + { MYSQLND_STR_W_LEN("proto_binary_fetched_json") }, { MYSQLND_STR_W_LEN("proto_binary_fetched_blob") }, { MYSQLND_STR_W_LEN("proto_binary_fetched_enum") }, { MYSQLND_STR_W_LEN("proto_binary_fetched_set") }, @@ -212,32 +212,16 @@ 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) +mysqlnd_stats_init(MYSQLND_STATS ** stats, const size_t statistic_count, const zend_bool persistent) { - *stats = calloc(1, sizeof(MYSQLND_STATS)); + *stats = pecalloc(1, sizeof(MYSQLND_STATS), persistent); if (*stats == NULL) { return; } - (*stats)->values = calloc(statistic_count, sizeof(uint64_t)); - (*stats)->triggers = calloc(statistic_count, sizeof(mysqlnd_stat_trigger)); + (*stats)->values = pecalloc(statistic_count, sizeof(uint64_t), persistent); + (*stats)->triggers = pecalloc(statistic_count, sizeof(mysqlnd_stat_trigger), persistent); (*stats)->in_trigger = FALSE; (*stats)->count = statistic_count; #ifdef ZTS @@ -249,15 +233,15 @@ mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count) /* {{{ mysqlnd_stats_end */ PHPAPI void -mysqlnd_stats_end(MYSQLND_STATS * stats) +mysqlnd_stats_end(MYSQLND_STATS * stats, const zend_bool persistent) { #ifdef ZTS tsrm_mutex_free(stats->LOCK_access); #endif - free(stats->triggers); - free(stats->values); + pefree(stats->triggers, persistent); + pefree(stats->values, persistent); /* mnd_free will reference LOCK_access and crash...*/ - free(stats); + pefree(stats, persistent); } /* }}} */ @@ -295,6 +279,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 |