summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2008-07-15 13:12:27 +0000
committerAndrey Hristov <andrey@php.net>2008-07-15 13:12:27 +0000
commit73dfa53ca8c9903e5db86baec417a39c133fc001 (patch)
tree00ff7ddcbaca5a0e7d95ed050e9f5708519c867e /ext/mysqli/mysqli.c
parent6cf169b16ca9f7ebd819b3ff50dc92a0c0ef1473 (diff)
downloadphp-git-73dfa53ca8c9903e5db86baec417a39c133fc001.tar.gz
Sync with bzr
Diffstat (limited to 'ext/mysqli/mysqli.c')
-rw-r--r--ext/mysqli/mysqli.c33
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;