diff options
| author | Andrey Hristov <andrey@php.net> | 2007-10-05 21:23:56 +0000 | 
|---|---|---|
| committer | Andrey Hristov <andrey@php.net> | 2007-10-05 21:23:56 +0000 | 
| commit | 8b9b553aa264d3c0afe611f49499e787004983c7 (patch) | |
| tree | 840ea2b1127ec97a63f36ffda689a1a1fe5fb975 /ext/mysqlnd/mysqlnd_statistics.h | |
| parent | 9f9495a48483aac9f6bc92ceea5841a8d243e2aa (diff) | |
| download | php-git-8b9b553aa264d3c0afe611f49499e787004983c7.tar.gz | |
Import mysqlnd
Patch ext/mysql and ext/mysqli to support mysqlnd
Diffstat (limited to 'ext/mysqlnd/mysqlnd_statistics.h')
| -rw-r--r-- | ext/mysqlnd/mysqlnd_statistics.h | 209 | 
1 files changed, 209 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h new file mode 100644 index 0000000000..2122ac2411 --- /dev/null +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -0,0 +1,209 @@ +/* +  +----------------------------------------------------------------------+ +  | PHP Version 6                                                        | +  +----------------------------------------------------------------------+ +  | Copyright (c) 2006-2007 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        | +  | available through the world-wide-web at the following url:           | +  | http://www.php.net/license/3_01.txt                                  | +  | If you did not receive a copy of the PHP license and are unable to   | +  | 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>                              | +  +----------------------------------------------------------------------+ +*/ + +/* $Id$ */ + +#ifndef MYSQLND_STATISTICS_H +#define MYSQLND_STATISTICS_H + + +extern MYSQLND_STATS *mysqlnd_global_stats; + +typedef struct st_mysqlnd_string +{ +	char	*s; +	size_t	l; +} MYSQLND_STRING; + +extern const MYSQLND_STRING mysqlnd_stats_values_names[]; + +#ifdef ZTS + +#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ + 		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic)]++; \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +	}\ + } + +#define MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(statistic1, value1, statistic2, value2) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global stats increase w value [%s] [%s]", mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ + 		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic1)] += (value1); \ +		mysqlnd_global_stats->values[(statistic2)] += (value2); \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +	}\ + } + +#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global&conn stat decrease [%s]", mysqlnd_stats_values_names[statistic]); \ + 		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic)]--; \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)]--; \ +		} \ +	}\ + } + +#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global&Conn stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ + 		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic)]++; \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)]++; \ +		} \ +	}\ + } + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		my_uint64 v = (my_uint64) (value); \ +		DBG_INF_FMT("Global&Conn stat increase w value [%s]", mysqlnd_stats_values_names[statistic]); \ +		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic)] += v; \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)]+= v; \ +		} \ +	}\ + } + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		my_uint64 v1 = (my_uint64) (value1); \ +		my_uint64 v2 = (my_uint64) (value2); \ +		my_uint64 v3 = (my_uint64) (value3); \ +								 \ +		tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ +		mysqlnd_global_stats->values[(statistic1)]+= v1; \ +		mysqlnd_global_stats->values[(statistic2)]+= v2; \ +		mysqlnd_global_stats->values[(statistic3)]+= v3; \ +		tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ +		} \ +	} \ + } + + +#else /* NON-ZTS */ + +#define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ +		mysqlnd_global_stats->values[(statistic)]++; \ +	} \ + } + +#define MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(statistic1, value1, statistic2, value2) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global stats increase w value [%s] [%s]", \ +			mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ +		mysqlnd_global_stats->values[(statistic1)] += (value1); \ +		mysqlnd_global_stats->values[(statistic2)] += (value2); \ +	}\ + } + + +#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global&Conn stat decrease [%s]", mysqlnd_stats_values_names[statistic]); \ +		mysqlnd_global_stats->values[(statistic)]--; \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)]--; \ +		} \ +	} \ + } + +#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		DBG_INF_FMT("Global&Conn stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ +		mysqlnd_global_stats->values[(statistic)]++; \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)]++; \ +		} \ +	} \ + } + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ + { \ +	my_uint64 v = (my_uint64) (value); \ +	DBG_INF_FMT("Global&Conn stats increase w value [%s]", mysqlnd_stats_values_names[statistic]); \ + 	if (MYSQLND_G(collect_statistics)) { \ +		mysqlnd_global_stats->values[(statistic)] += v; \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic)] += v; \ +		} \ +	} \ + }  + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ + { \ + 	if (MYSQLND_G(collect_statistics)) { \ +		my_uint64 v1 = (my_uint64) (value1); \ +		my_uint64 v2 = (my_uint64) (value2); \ +		my_uint64 v3 = (my_uint64) (value3); \ +								\ +		mysqlnd_global_stats->values[(statistic1)]+= v1; \ +		mysqlnd_global_stats->values[(statistic2)]+= v2; \ +		mysqlnd_global_stats->values[(statistic3)]+= v3; \ +		if ((conn_stats)) { \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ +			((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ +		} \ +	} \ + } + +#endif + +void mysqlnd_fill_stats_hash(const MYSQLND_STATS * const stats, zval *return_value +							 TSRMLS_DC ZEND_FILE_LINE_DC); + +#endif	/* MYSQLND_STATISTICS_H */ + + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */  | 
