georg Wed Oct 29 15:48:48 2003 EDT Modified files: /php-src/ext/mysqli config.m4 mysqli_api.c mysqli_nonapi.c php_mysqli.h Log: added support for embedded MySQL Server some prototype fixes
Index: php-src/ext/mysqli/config.m4 diff -u php-src/ext/mysqli/config.m4:1.7 php-src/ext/mysqli/config.m4:1.8 --- php-src/ext/mysqli/config.m4:1.7 Mon May 19 19:43:41 2003 +++ php-src/ext/mysqli/config.m4 Wed Oct 29 15:48:47 2003 @@ -1,12 +1,16 @@ dnl -dnl $Id: config.m4,v 1.7 2003/05/19 23:43:41 sniper Exp $ +dnl $Id: config.m4,v 1.8 2003/10/29 20:48:47 georg Exp $ dnl config.m4 for extension mysqli PHP_ARG_WITH(mysqli, for MySQLi support, [ --with-mysqli[=FILE] Include MySQLi support. FILE is the optional pathname to mysql_config.]) -if test "$PHP_MYSQLI" != "no"; then +PHP_ARG_WITH(embedded_mysqli, for embedded MySQLi support, +[ --with-embedded-mysqli[=FILE] Include embedded MySQLi support. FILE is the optional + pathname to mysql_config.]) + +if test "$PHP_MYSQLI" != "no" '-o' "$PHP_EMBEDDED_MYSQLI" != "no"; then if test "$PHP_MYSQL" = "yes"; then AC_MSG_ERROR([--with-mysql (using bundled libs) can not be used together with --with-mysqli.]) @@ -15,12 +19,23 @@ if test "$PHP_MYSQLI" = "yes"; then MYSQL_CONFIG=`$php_shtool path mysql_config` else - MYSQL_CONFIG=$PHP_MYSQLI + if test "$PHP_MYSQLI" != "no"; then + MYSQL_CONFIG=$PHP_MYSQLI + else + MYSQL_CONFIG=$PHP_EMBEDDED_MYSQLI + fi + fi + + if test "$PHP_MYSQLI" != "no"; then + MYSQL_LIB_CFG='--libs' + else + AC_DEFINE([HAVE_EMBEDDED_MYSQLI],[1], [embedded MySQL support enabled]) + MYSQL_LIB_CFG='--libmysqld-libs' fi - if test -x "$MYSQL_CONFIG" && $MYSQL_CONFIG --libs > /dev/null 2>&1; then + if test -x "$MYSQL_CONFIG" && $MYSQL_CONFIG $MYSQL_LIB_CFG > /dev/null 2>&1; then MYSQLI_INCLINE=`$MYSQL_CONFIG --cflags | sed -e "s/'//g"` - MYSQLI_LIBLINE=`$MYSQL_CONFIG --libs | sed -e "s/'//g"` + MYSQLI_LIBLINE=`$MYSQL_CONFIG $MYSQL_LIB_CFG | sed -e "s/'//g"` else AC_MSG_RESULT([mysql_config not found]) AC_MSG_ERROR([Please reinstall the mysql distribution]) Index: php-src/ext/mysqli/mysqli_api.c diff -u php-src/ext/mysqli/mysqli_api.c:1.46 php-src/ext/mysqli/mysqli_api.c:1.47 --- php-src/ext/mysqli/mysqli_api.c:1.46 Thu Sep 25 07:19:25 2003 +++ php-src/ext/mysqli/mysqli_api.c Wed Oct 29 15:48:47 2003 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_api.c,v 1.46 2003/09/25 11:19:25 georg Exp $ + $Id: mysqli_api.c,v 1.47 2003/10/29 20:48:47 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -1614,6 +1614,41 @@ } /* }}} */ +#ifdef HAVE_EMBEDDED_MYSQLI +/* {{{ proto bool mysqli_server_init(void) + initialize embedded server */ +PHP_FUNCTION(mysqli_server_init) +{ + zval *server; + zval *groups; + + if (MyG(embedded)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Embedded server already initialized."); + RETURN_FALSE; + } + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|aa", &server, &groups) == FAILURE) { + return; + } + + if (mysql_server_init(0, NULL, NULL)) { + RETURN_FALSE; + } + MyG(embedded) = 1; + RETURN_TRUE; +} +/* }}} */ + +/* {{{ proto void mysqli_server_end(void) +*/ +PHP_FUNCTION(mysqli_server_end) +{ + mysql_server_end(); +} +/* }}} */ +#endif + + /* {{{ proto bool mysqli_slave_query(object link, string query) Enforce execution of a query on a slave in a master/slave setup */ PHP_FUNCTION(mysqli_slave_query) @@ -1832,7 +1867,7 @@ } /* }}} */ -/* {{{ proto resource mysqli_stmt_store_result(stmt) +/* {{{ proto object mysqli_stmt_store_result(stmt) */ PHP_FUNCTION(mysqli_stmt_store_result) { @@ -1871,7 +1906,7 @@ #endif /* }}} */ -/* {{{ proto resource mysqli_store_result(object link) +/* {{{ proto object mysqli_store_result(object link) Buffer result set on client */ PHP_FUNCTION(mysqli_store_result) { @@ -1921,7 +1956,7 @@ /* }}} */ -/* {{{ proto resource mysqli_use_result(object link) +/* {{{ proto object mysqli_use_result(object link) Directly retrieve query results - do not buffer results on client side */ PHP_FUNCTION(mysqli_use_result) { @@ -1945,7 +1980,7 @@ } /* }}} */ -/* {{{ proto resource mysqli_warning_count (object link) +/* {{{ proto int mysqli_warning_count (object link) Return number of warnings from the last query for the given link */ PHP_FUNCTION(mysqli_warning_count) { Index: php-src/ext/mysqli/mysqli_nonapi.c diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.17 php-src/ext/mysqli/mysqli_nonapi.c:1.18 --- php-src/ext/mysqli/mysqli_nonapi.c:1.17 Tue Sep 16 15:45:22 2003 +++ php-src/ext/mysqli/mysqli_nonapi.c Wed Oct 29 15:48:47 2003 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_nonapi.c,v 1.17 2003/09/16 19:45:22 hholzgra Exp $ + $Id: mysqli_nonapi.c,v 1.18 2003/10/29 20:48:47 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -29,7 +29,7 @@ #include "ext/standard/info.h" #include "php_mysqli.h" -/* {{{ proto resource mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]]) +/* {{{ proto object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]]) Open a connection to a mysql server */ PHP_FUNCTION(mysqli_connect) { @@ -99,6 +99,65 @@ } } /* }}} */ + +#ifdef HAVE_EMBEDDED_MYSQLI +/* {{{ proto object mysqli_embedded_connect(void) + Open a connection to a embedded mysql server */ +PHP_FUNCTION(mysqli_embedded_connect) +{ + MYSQL *mysql; + MYSQLI_RESOURCE *mysqli_resource; + PR_MYSQL *prmysql = NULL; + zval *object = getThis(); + char *dbname = NULL; + int dblen = 0; + struct timeval starttime; + + if (!MyG(embedded)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Embedded server was not initialized."); + RETURN_FALSE; + } + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &dbname, &dblen) == FAILURE) { + return; + } + + if (MyG(profiler)){ + gettimeofday(&starttime, NULL); + } + + mysql = mysql_init(NULL); + + if (mysql_real_connect(mysql, NULL, NULL, NULL, dbname, 0, NULL, 0) == NULL) { + php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql)); + /* free mysql structure */ + mysql_close(mysql); + RETURN_FALSE; + } + + php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) TSRMLS_CC); + + if (MyG(profiler)) { + prmysql = (PR_MYSQL *)MYSQLI_PROFILER_NEW(prmain, MYSQLI_PR_MYSQL, 0); + php_mysqli_profiler_timediff(starttime, &prmysql->header.elapsedtime); + MYSQLI_PROFILER_STARTTIME(prmysql); + prmysql->hostname = prmysql->username = NULL; + prmysql->thread_id = mysql->thread_id; + } + + mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); + mysqli_resource->ptr = (void *)mysql; + mysqli_resource->prinfo = prmysql; + + if (!object) { + MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry); + } else { + ((mysqli_object *) zend_object_store_get_object(object TSRMLS_CC))->ptr = mysqli_resource; + } +} +/* }}} */ +#endif /* {{{ proto int mysqli_connect_errno() Returns the numerical value of the error message from last connect command */ Index: php-src/ext/mysqli/php_mysqli.h diff -u php-src/ext/mysqli/php_mysqli.h:1.22 php-src/ext/mysqli/php_mysqli.h:1.23 --- php-src/ext/mysqli/php_mysqli.h:1.22 Thu Sep 25 07:19:25 2003 +++ php-src/ext/mysqli/php_mysqli.h Wed Oct 29 15:48:47 2003 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: php_mysqli.h,v 1.22 2003/09/25 11:19:25 georg Exp $ + $Id: php_mysqli.h,v 1.23 2003/10/29 20:48:47 georg Exp $ */ /* A little hack to prevent build break, when mysql is used together with @@ -210,6 +210,9 @@ PHP_FUNCTION(mysqli_disable_reads_from_master); PHP_FUNCTION(mysqli_disable_rpl_parse); PHP_FUNCTION(mysqli_dump_debug_info); +#ifdef HAVE_EMBEDDED_MYSQLI +PHP_FUNCTION(mysqli_embedded_connect); +#endif PHP_FUNCTION(mysqli_enable_reads_from_master); PHP_FUNCTION(mysqli_enable_rpl_parse); PHP_FUNCTION(mysqli_errno); @@ -260,6 +263,10 @@ PHP_FUNCTION(mysqli_select_db); PHP_FUNCTION(mysqli_send_long_data); PHP_FUNCTION(mysqli_send_query); +#ifdef HAVE_EMBEDDED_MYSQLI +PHP_FUNCTION(mysqli_server_init); +PHP_FUNCTION(mysqli_server_end); +#endif PHP_FUNCTION(mysqli_slave_query); #if MYSQL_VERSION_ID >= 40101 PHP_FUNCTION(mysqli_sqlstate); @@ -283,17 +290,20 @@ PHP_FUNCTION(mysqli_warning_count); ZEND_BEGIN_MODULE_GLOBALS(mysqli) - long default_link; - long num_links; - long max_links; + long default_link; + long num_links; + long max_links; unsigned int default_port; - char *default_host; - char *default_user; - char *default_pw; - char *default_socket; - long error_no; - char *error_msg; + char *default_host; + char *default_user; + char *default_pw; + char *default_socket; + long error_no; + char *error_msg; unsigned int profiler; +#ifdef HAVE_EMBEDDED_MYSQLI + unsigned int embedded; +#endif ZEND_END_MODULE_GLOBALS(mysqli) #ifdef ZTS
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php