diff options
Diffstat (limited to 'ext/mysqli/mysqli.c')
-rw-r--r-- | ext/mysqli/mysqli.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index d9fe89c661..4f1d81307e 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -652,6 +652,10 @@ PHP_MINIT_FUNCTION(mysqli) REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS | CONST_PERSISTENT); + if (mysql_server_init(0, NULL, NULL)) { + return FAILURE; + } + return SUCCESS; } /* }}} */ @@ -660,6 +664,16 @@ PHP_MINIT_FUNCTION(mysqli) */ PHP_MSHUTDOWN_FUNCTION(mysqli) { +#ifdef PHP_WIN32 + unsigned long client_ver = mysql_get_client_version; + /* Can't call mysql_server_end() multiple times prior to 5.0.42 on Windows */ + if ((client_ver > 50042 && client_ver < 50100) || client_ver > 50122) { + mysql_server_end(); + } +#else + mysql_server_end(); +#endif + zend_hash_destroy(&mysqli_driver_properties); zend_hash_destroy(&mysqli_result_properties); zend_hash_destroy(&mysqli_stmt_properties); @@ -676,6 +690,11 @@ PHP_MSHUTDOWN_FUNCTION(mysqli) */ PHP_RINIT_FUNCTION(mysqli) { +#ifdef ZTS + if (mysql_thread_init()) { + return FAILURE; + } +#endif MyG(error_msg) = NULL; MyG(error_no) = 0; @@ -687,6 +706,9 @@ PHP_RINIT_FUNCTION(mysqli) */ PHP_RSHUTDOWN_FUNCTION(mysqli) { +#ifdef ZTS + mysql_thread_end(); +#endif if (MyG(error_msg)) { efree(MyG(error_msg)); } |