com php-src: Use Zend MM to keep statistic of non-persistent connections (calloc/free->pecalloc/pefree): ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_driver.c ext/mysqlnd/mysqlnd_plugin .c ext/mysqlnd/mysqlnd_statistics.c ext/mysqlnd/mysql nd_statistics.h
| From: | Dmitry Stogov | Date: | Fri, 18 Sep 2015 07:36:09 +0000 |
| Subject: | com php-src: Use Zend MM to keep statistic of non-persistent connections (calloc/free->pecalloc/pefree): ext/mysqlnd/mysqlnd.c ext/mysqlnd/mysqlnd_driver.c ext/mysqlnd/mysqlnd_plugin .c ext/mysqlnd/mysqlnd_statistics.c ext/mysqlnd/mysql nd_statistics.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-89065@lists.php.net to get a copy of this message | ||
Commit: 6a3580fd567dfbb7fa9bf38b0a4bbc1bf6126cb1
Author: Dmitry Stogov <dmitry@zend.com> Fri, 18 Sep 2015 10:36:09 +0300
Parents: cc875d1a25470c72a1bb8ce88388ce7f9e5ce737
Branches: PHP-7.0 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=6a3580fd567dfbb7fa9bf38b0a4bbc1bf6126cb1
Log:
Use Zend MM to keep statistic of non-persistent connections (calloc/free->pecalloc/pefree)
Changed paths:
M ext/mysqlnd/mysqlnd.c
M ext/mysqlnd/mysqlnd_driver.c
M ext/mysqlnd/mysqlnd_plugin.c
M ext/mysqlnd/mysqlnd_statistics.c
M ext/mysqlnd/mysqlnd_statistics.h
Diff:
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index d60a83c..1a1882c 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -199,7 +199,7 @@ MYSQLND_METHOD_PRIVATE(mysqlnd_conn_data, dtor)(MYSQLND_CONN_DATA * conn)
}
if (conn->stats) {
- mysqlnd_stats_end(conn->stats);
+ mysqlnd_stats_end(conn->stats, conn->persistent);
}
mnd_pefree(conn, conn->persistent);
@@ -2971,7 +2971,7 @@ static enum_func_status
MYSQLND_METHOD(mysqlnd_conn_data, init)(MYSQLND_CONN_DATA * conn)
{
DBG_ENTER("mysqlnd_conn_data::init");
- mysqlnd_stats_init(&conn->stats, STAT_LAST);
+ mysqlnd_stats_init(&conn->stats, STAT_LAST, conn->persistent);
SET_ERROR_AFF_ROWS(conn);
conn->net = mysqlnd_net_init(conn->persistent, conn->stats, conn->error_info);
diff --git a/ext/mysqlnd/mysqlnd_driver.c b/ext/mysqlnd/mysqlnd_driver.c
index 90da451..628e026 100644
--- a/ext/mysqlnd/mysqlnd_driver.c
+++ b/ext/mysqlnd/mysqlnd_driver.c
@@ -57,7 +57,7 @@ PHPAPI void mysqlnd_library_end(void)
{
if (mysqlnd_library_initted == TRUE) {
mysqlnd_plugin_subsystem_end();
- mysqlnd_stats_end(mysqlnd_global_stats);
+ mysqlnd_stats_end(mysqlnd_global_stats, 1);
mysqlnd_global_stats = NULL;
mysqlnd_library_initted = FALSE;
mysqlnd_reverse_api_end();
@@ -75,7 +75,7 @@ PHPAPI void mysqlnd_library_init(void)
mysqlnd_conn_data_set_methods(&MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_conn_data));
_mysqlnd_init_ps_subsystem();
/* Should be calloc, as mnd_calloc will reference LOCK_access*/
- mysqlnd_stats_init(&mysqlnd_global_stats, STAT_LAST);
+ mysqlnd_stats_init(&mysqlnd_global_stats, STAT_LAST, 1);
mysqlnd_plugin_subsystem_init();
{
mysqlnd_plugin_core.plugin_header.plugin_stats.values = mysqlnd_global_stats;
diff --git a/ext/mysqlnd/mysqlnd_plugin.c b/ext/mysqlnd/mysqlnd_plugin.c
index 094bd55..c392429 100644
--- a/ext/mysqlnd/mysqlnd_plugin.c
+++ b/ext/mysqlnd/mysqlnd_plugin.c
@@ -71,7 +71,7 @@ enum_func_status mysqlnd_example_plugin_end(void * p)
{
struct st_mysqlnd_typeii_plugin_example * plugin = (struct st_mysqlnd_typeii_plugin_example *) p;
DBG_ENTER("mysqlnd_example_plugin_end");
- mysqlnd_stats_end(plugin->plugin_header.plugin_stats.values);
+ mysqlnd_stats_end(plugin->plugin_header.plugin_stats.values, 1);
plugin->plugin_header.plugin_stats.values = NULL;
DBG_RETURN(PASS);
}
@@ -82,7 +82,7 @@ enum_func_status mysqlnd_example_plugin_end(void * p)
void
mysqlnd_example_plugin_register(void)
{
- mysqlnd_stats_init(&mysqlnd_plugin_example_stats, EXAMPLE_STAT_LAST);
+ mysqlnd_stats_init(&mysqlnd_plugin_example_stats, EXAMPLE_STAT_LAST, 1);
mysqlnd_example_plugin.plugin_header.plugin_stats.values = mysqlnd_plugin_example_stats;
mysqlnd_plugin_register_ex((struct st_mysqlnd_plugin_header *) &mysqlnd_example_plugin);
}
diff --git a/ext/mysqlnd/mysqlnd_statistics.c b/ext/mysqlnd/mysqlnd_statistics.c
index f550948..094ea11 100644
--- a/ext/mysqlnd/mysqlnd_statistics.c
+++ b/ext/mysqlnd/mysqlnd_statistics.c
@@ -230,14 +230,14 @@ _mysqlnd_get_client_stats(zval *return_value ZEND_FILE_LINE_DC)
/* {{{ mysqlnd_stats_init */
PHPAPI void
-mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count)
+mysqlnd_stats_init(MYSQLND_STATS ** stats, size_t statistic_count, int 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 +249,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, int 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);
}
/* }}} */
diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h
index ea2611c..19aedf3 100644
--- a/ext/mysqlnd/mysqlnd_statistics.h
+++ b/ext/mysqlnd/mysqlnd_statistics.h
@@ -159,8 +159,8 @@ extern const MYSQLND_STRING mysqlnd_stats_values_names[];
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);
-PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats);
+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);