From 73dfa53ca8c9903e5db86baec417a39c133fc001 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Tue, 15 Jul 2008 13:12:27 +0000 Subject: Sync with bzr --- ext/mysqli/mysqli.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'ext/mysqli/mysqli.c') diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 1fe06770f2..7cfa6714c0 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -94,12 +94,8 @@ static int le_pmysqli; /* Destructor for mysqli entries in free_links/used_links */ void php_mysqli_dtor_p_elements(void *data) { - MYSQL *mysql = (MYSQL *) data; -#if defined(MYSQLI_USE_MYSQLND) TSRMLS_FETCH(); - - mysqlnd_end_psession(mysql); -#endif + MYSQL *mysql = (MYSQL *) data; mysqli_close(mysql, MYSQLI_CLOSE_IMPLICIT); } @@ -903,6 +899,12 @@ PHP_MINIT_FUNCTION(mysqli) #endif #endif + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT); +#ifdef SERVER_QUERY_WAS_SLOW + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT); +#endif + return SUCCESS; } /* }}} */ @@ -962,6 +964,26 @@ PHP_RINIT_FUNCTION(mysqli) } /* }}} */ + +#ifdef MYSQLI_USE_MYSQLND +static void php_mysqli_persistent_helper_for_every(void *p) +{ + TSRMLS_FETCH(); + mysqlnd_end_psession((MYSQLND *) p); +} /* }}} */ + + +static int php_mysqli_persistent_helper_once(zend_rsrc_list_entry *le TSRMLS_DC) +{ + if (le->type == php_le_pmysqli()) { + mysqli_plist_entry *plist = (mysqli_plist_entry *) le->ptr; + zend_ptr_stack_apply(&plist->free_links, php_mysqli_persistent_helper_for_every); + } + return ZEND_HASH_APPLY_KEEP; +} /* }}} */ +#endif + + /* {{{ PHP_RSHUTDOWN_FUNCTION */ PHP_RSHUTDOWN_FUNCTION(mysqli) @@ -975,6 +997,7 @@ PHP_RSHUTDOWN_FUNCTION(mysqli) efree(MyG(error_msg)); } #ifdef MYSQLI_USE_MYSQLND + zend_hash_apply(&EG(persistent_list), (apply_func_t) php_mysqli_persistent_helper_once TSRMLS_CC); mysqlnd_palloc_rshutdown(MyG(mysqlnd_thd_zval_cache)); #endif return SUCCESS; -- cgit v1.2.1