diff options
author | Andrey Hristov <andrey@php.net> | 2008-07-15 13:12:27 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2008-07-15 13:12:27 +0000 |
commit | 73dfa53ca8c9903e5db86baec417a39c133fc001 (patch) | |
tree | 00ff7ddcbaca5a0e7d95ed050e9f5708519c867e /ext/mysqli/mysqli.c | |
parent | 6cf169b16ca9f7ebd819b3ff50dc92a0c0ef1473 (diff) | |
download | php-git-73dfa53ca8c9903e5db86baec417a39c133fc001.tar.gz |
Sync with bzr
Diffstat (limited to 'ext/mysqli/mysqli.c')
-rw-r--r-- | ext/mysqli/mysqli.c | 33 |
1 files changed, 28 insertions, 5 deletions
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; |