diff options
| author | Zak Greant <zak@php.net> | 2002-03-24 10:57:40 +0000 | 
|---|---|---|
| committer | Zak Greant <zak@php.net> | 2002-03-24 10:57:40 +0000 | 
| commit | 28de0b545ef5aa7ba370b88c7cc44453235bce24 (patch) | |
| tree | 73f3252267ddf6b9e91a09bdb4b4a9c3c56ed248 /ext/mysql/php_mysql.c | |
| parent | 66e510f60a55ace0594ac8f0a1d0cca509bea3fa (diff) | |
| download | php-git-28de0b545ef5aa7ba370b88c7cc44453235bce24.tar.gz | |
(PHP mysql_list_processes) Returns a pointer to a result set containing
                           information on the processes running in the
                           MySQL server.
(PHP mysql_stat) Returns a string containing information on the status
                 of the MySQL server.
@- Added two new functions: mysql_list_processes and mysql_stat (Georg)
@- mysql_list_processes() fetches information on the processes running on
@  the MySQL server.
@- mysql_stat() returns status information for a MySQL server.
#  Committed for Georg by Zak
Diffstat (limited to 'ext/mysql/php_mysql.c')
| -rw-r--r-- | ext/mysql/php_mysql.c | 110 | 
1 files changed, 93 insertions, 17 deletions
| diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 10c1f78fd6..609ee5811a 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -130,6 +130,7 @@ function_entry mysql_functions[] = {  	PHP_FE(mysql_list_dbs,								NULL)  	PHP_FE(mysql_list_tables,							NULL)  	PHP_FE(mysql_list_fields,							NULL) +	PHP_FE(mysql_list_processes,					NULL)  	PHP_FE(mysql_error,									NULL)  #ifdef HAVE_MYSQL_ERRNO  	PHP_FE(mysql_errno,									NULL) @@ -153,7 +154,8 @@ function_entry mysql_functions[] = {  	PHP_FE(mysql_field_len,								NULL)  	PHP_FE(mysql_field_type,							NULL)  	PHP_FE(mysql_field_flags,							NULL) -	PHP_FE(mysql_escape_string,							NULL) +	PHP_FE(mysql_escape_string,						NULL) +  PHP_FE(mysql_stat,										NULL)  #ifdef HAVE_GETINFO_FUNCS  	PHP_FE(mysql_get_client_info,							NULL)  	PHP_FE(mysql_get_host_info,							NULL) @@ -195,7 +197,7 @@ zend_module_entry mysql_module_entry = {      ZEND_MODULE_STARTUP_N(mysql),      PHP_MSHUTDOWN(mysql),      PHP_RINIT(mysql), -    PHP_RSHUTDOWN(mysql),  +    PHP_RSHUTDOWN(mysql),      PHP_MINFO(mysql),      NO_VERSION_YET,      STANDARD_MODULE_PROPERTIES @@ -524,7 +526,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  			if ((tmp=strchr(tmp, ':'))) {  				tmp++;  				socket=tmp; -			}  +			}  		} else {  			socket = tmp;  		} @@ -542,7 +544,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  	}  	if (persistent) {  		list_entry *le; -		 +  		/* try to find if we already have this link in our persistent list */  		if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_details_length+1, (void **) &le)==FAILURE) {  /* we don't */  			list_entry new_le; @@ -572,12 +574,12 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  				php_error(E_WARNING, "%s", MySG(connect_error));  #if defined(HAVE_MYSQL_ERRNO)  				MySG(connect_errno)=mysql_errno(&mysql->conn); -#endif								    +#endif  				free(mysql);  				efree(hashed_details);  				MYSQL_DO_CONNECT_RETURN_FALSE();  			} -			 +  			/* hash it up */  			Z_TYPE(new_le) = le_plink;  			new_le.ptr = mysql; @@ -902,6 +904,45 @@ PHP_FUNCTION(mysql_get_server_info)  }  /* }}} */ +/* {{{ proto string mysql_stat([int link_identifier]) +   Returns a string containing status information */ +PHP_FUNCTION(mysql_stat) +{ +	zval **mysql_link; +	char *stat; +	char *key, *val; +	int id; +	php_mysql_conn *mysql; + +	switch(ZEND_NUM_ARGS()) { +		case 0: +			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); +			CHECK_LINK(id); +			break; +		case 1: +			if (zend_get_parameters_ex(1,&mysql_link)==FAILURE) { +				RETURN_FALSE; +			} +			id = -1; +			break; +		default: +			WRONG_PARAM_COUNT; +			break; +	} + +	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); + +	stat = mysql_stat(&mysql->conn); + +	// split string in array +	if (array_init(return_value) == FAILURE) { +		RETURN_FALSE; +	} + +	RETURN_STRING(stat, 1); +} +/* }}} */ +  #endif  #if MYSQL_VERSION_ID < 40000 @@ -912,7 +953,7 @@ PHP_FUNCTION(mysql_create_db)  	zval **db, **mysql_link;  	int id;  	php_mysql_conn *mysql; -	 +  	switch(ZEND_NUM_ARGS()) {  		case 1:  			if (zend_get_parameters_ex(1, &db)==FAILURE) { @@ -1018,7 +1059,7 @@ static void php_mysql_do_query_general(zval **query, zval **mysql_link, int link  	convert_to_string_ex(query);  	/* mysql_query is binary unsafe, use mysql_real_query */ -#if MYSQL_VERSION_ID > 32199  +#if MYSQL_VERSION_ID > 32199  	if (mysql_real_query(&mysql->conn, Z_STRVAL_PP(query), Z_STRLEN_PP(query))!=0) {  		RETURN_FALSE;  	} @@ -1135,7 +1176,7 @@ PHP_FUNCTION(mysql_list_dbs)  	int id;  	php_mysql_conn *mysql;  	MYSQL_RES *mysql_result; -	 +  	switch(ZEND_NUM_ARGS()) {  		case 0:  			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); @@ -1151,7 +1192,7 @@ PHP_FUNCTION(mysql_list_dbs)  			WRONG_PARAM_COUNT;  			break;  	} -	 +  	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink);  	if ((mysql_result=mysql_list_dbs(&mysql->conn, NULL))==NULL) { @@ -1190,9 +1231,9 @@ PHP_FUNCTION(mysql_list_tables)  			WRONG_PARAM_COUNT;  			break;  	} -		 +  	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); -	 +  	convert_to_string_ex(db);  	if (mysql_select_db(&mysql->conn, Z_STRVAL_PP(db))!=0) {  		RETURN_FALSE; @@ -1214,7 +1255,7 @@ PHP_FUNCTION(mysql_list_fields)  	int id;  	php_mysql_conn *mysql;  	MYSQL_RES *mysql_result; -	 +  	switch(ZEND_NUM_ARGS()) {  		case 2:  			if (zend_get_parameters_ex(2, &db, &table)==FAILURE) { @@ -1233,9 +1274,9 @@ PHP_FUNCTION(mysql_list_fields)  			WRONG_PARAM_COUNT;  			break;  	} -		 +  	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); -	 +  	convert_to_string_ex(db);  	if (mysql_select_db(&mysql->conn, Z_STRVAL_PP(db))!=0) {  		RETURN_FALSE; @@ -1249,6 +1290,41 @@ PHP_FUNCTION(mysql_list_fields)  }  /* }}} */ +/* {{{ proto resource mysql_list_processes([int link_identifier]) +   Returns a result set describing the current server threads */ +PHP_FUNCTION(mysql_list_processes) +{ +	zval **mysql_link; +	int id; +	php_mysql_conn *mysql; +	MYSQL_RES *mysql_result; + +	switch(ZEND_NUM_ARGS()) { +		case 0: +			id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); +			CHECK_LINK(id); +			break; +		case 1: +			if (zend_get_parameters_ex(1, &mysql_link)==FAILURE) { +				RETURN_FALSE; +			} +			id = -1; +			break; +		default: +			WRONG_PARAM_COUNT; +			break; +	} + +	ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); + +	if ((mysql_result=mysql_list_processes(&mysql->conn))==NULL) { +		php_error(E_WARNING, "Unable to save MySQL query result"); +		RETURN_FALSE; +	} +	ZEND_REGISTER_RESOURCE(return_value, mysql_result, le_result); +} +/* }}} */ +  /* {{{ proto string mysql_error([int link_identifier])     Returns the text of the error message from previous MySQL operation */ @@ -2060,11 +2136,11 @@ PHP_FUNCTION(mysql_free_result)  	if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &result)==FAILURE) {  		WRONG_PARAM_COUNT;  	} -	 +  	if (Z_TYPE_PP(result)==IS_RESOURCE && Z_LVAL_PP(result)==0) {  		RETURN_FALSE;  	} -	 +  	ZEND_FETCH_RESOURCE(mysql_result, MYSQL_RES *, result, -1, "MySQL result", le_result);  	zend_list_delete(Z_LVAL_PP(result)); | 
