mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
missed to commit to the branch
This commit is contained in:
parent
d2f681cecd
commit
4a549fbb3d
3 changed files with 47 additions and 9 deletions
|
@ -240,7 +240,8 @@ PHPAPI void
|
|||
mysqlnd_stats_init(MYSQLND_STATS ** stats)
|
||||
{
|
||||
*stats = calloc(1, sizeof(MYSQLND_STATS));
|
||||
(*stats)->handlers = calloc(STAT_LAST, sizeof(mysqlnd_stat_handler));
|
||||
(*stats)->triggers = calloc(STAT_LAST, sizeof(mysqlnd_stat_trigger));
|
||||
(*stats)->in_trigger = FALSE;
|
||||
#ifdef ZTS
|
||||
(*stats)->LOCK_access = tsrm_mutex_alloc();
|
||||
#endif
|
||||
|
@ -256,13 +257,46 @@ mysqlnd_stats_end(MYSQLND_STATS * stats)
|
|||
#ifdef ZTS
|
||||
tsrm_mutex_free(stats->LOCK_access);
|
||||
#endif
|
||||
free(stats->handlers);
|
||||
free(stats->triggers);
|
||||
/* mnd_free will reference LOCK_access and crash...*/
|
||||
free(stats);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_stats_set_trigger */
|
||||
PHPAPI mysqlnd_stat_trigger
|
||||
mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger TSRMLS_DC)
|
||||
{
|
||||
mysqlnd_stat_trigger ret = NULL;
|
||||
DBG_ENTER("mysqlnd_stats_set_trigger");
|
||||
if (stats) {
|
||||
MYSQLND_STATS_LOCK(stats);
|
||||
ret = stats->triggers[stat];
|
||||
stats->triggers[stat] = trigger;
|
||||
MYSQLND_STATS_UNLOCK(stats);
|
||||
}
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ mysqlnd_stats_set_handler */
|
||||
PHPAPI mysqlnd_stat_trigger
|
||||
mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats TSRMLS_DC)
|
||||
{
|
||||
mysqlnd_stat_trigger ret = NULL;
|
||||
DBG_ENTER("mysqlnd_stats_reset_trigger");
|
||||
if (stats) {
|
||||
MYSQLND_STATS_LOCK(stats);
|
||||
memset(stats->triggers, 0, STAT_LAST * sizeof(mysqlnd_stat_trigger));
|
||||
MYSQLND_STATS_UNLOCK(stats);
|
||||
}
|
||||
DBG_RETURN(ret);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* tab-width: 4
|
||||
|
|
|
@ -43,10 +43,10 @@ extern const MYSQLND_STRING mysqlnd_stats_values_names[];
|
|||
#endif
|
||||
|
||||
#define MYSQLND_CHECK_AND_CALL_HANDLER(stats, statistic, value) \
|
||||
if ((stats)->handlers[(statistic)] && (stats)->in_handler == FALSE) { \
|
||||
(stats)->in_handler = TRUE; \
|
||||
(stats)->handlers[(statistic)]((stats), (statistic), (value) TSRMLS_CC); \
|
||||
(stats)->in_handler = FALSE; \
|
||||
if ((stats)->triggers[(statistic)] && (stats)->in_trigger == FALSE) { \
|
||||
(stats)->in_trigger = TRUE; \
|
||||
(stats)->triggers[(statistic)]((stats), (statistic), (value) TSRMLS_CC); \
|
||||
(stats)->in_trigger = FALSE; \
|
||||
} \
|
||||
|
||||
|
||||
|
@ -223,6 +223,10 @@ void mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, zval *return_val
|
|||
PHPAPI void mysqlnd_stats_init(MYSQLND_STATS ** stats);
|
||||
PHPAPI void mysqlnd_stats_end(MYSQLND_STATS * stats);
|
||||
|
||||
PHPAPI mysqlnd_stat_trigger mysqlnd_stats_set_trigger(MYSQLND_STATS * const stats, enum_mysqlnd_collected_stats stat, mysqlnd_stat_trigger trigger TSRMLS_DC);
|
||||
PHPAPI mysqlnd_stat_trigger mysqlnd_stats_reset_triggers(MYSQLND_STATS * const stats TSRMLS_DC);
|
||||
|
||||
|
||||
#endif /* MYSQLND_STATISTICS_H */
|
||||
|
||||
|
||||
|
|
|
@ -210,13 +210,13 @@ typedef enum_func_status (*mysqlnd_fetch_row_func)(MYSQLND_RES *result,
|
|||
|
||||
typedef struct st_mysqlnd_stats MYSQLND_STATS;
|
||||
|
||||
typedef void (*mysqlnd_stat_handler)(MYSQLND_STATS * stats, enum_mysqlnd_collected_stats stat, int64_t change TSRMLS_DC);
|
||||
typedef void (*mysqlnd_stat_trigger)(MYSQLND_STATS * stats, enum_mysqlnd_collected_stats stat, int64_t change TSRMLS_DC);
|
||||
|
||||
struct st_mysqlnd_stats
|
||||
{
|
||||
uint64_t values[STAT_LAST];
|
||||
mysqlnd_stat_handler *handlers;
|
||||
zend_bool in_handler;
|
||||
mysqlnd_stat_trigger *triggers;
|
||||
zend_bool in_trigger;
|
||||
#ifdef ZTS
|
||||
MUTEX_T LOCK_access;
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue