Hello Michael,
this belongs to php-dev, I cc-ed them and the author of this code.
Derick
On Sun, 24 Mar 2002, Vergoz Michael (SYSDOOR) wrote:
> all the time you use pg_exec you have to put the result of this function
> into a 'PGresult *' and after the execution you have clear the pointer.
> In big trafic your apache can take more memory. We can save more 1k per
> query !!!
> there is the current code of pg_exec
>
> (L.714, file : ext/pgsql.c)
>
> PHP_FUNCTION(pg_exec)
> {
> zval **query, **pgsql_link = NULL;
> int id = -1;
> PGconn *pgsql;
> * PGresult *pgsql_result;*
> ExecStatusType status;
> pgsql_result_handle *pg_result;
> [...]
> convert_to_string_ex(query);
> * pgsql_result = PQexec(pgsql, Z_STRVAL_PP(query));* /* <- well with
> have free that buffer */
>
> if (pgsql_result) {
> status = PQresultStatus(pgsql_result);
> } else {
> status = (ExecStatusType) PQstatus(pgsql);
> }
> [...]
> switch (status) {
> case PGRES_EMPTY_QUERY:
> case PGRES_BAD_RESPONSE:
> case PGRES_NONFATAL_ERROR:
> case PGRES_FATAL_ERROR:
> php_error(E_WARNING, "PostgreSQL query failed: %s",
> PQerrorMessage(pgsql));
> RETURN_FALSE;
> break;
> * case PGRES_COMMAND_OK: /* well the query has be excuted, and
> the pg_result is in memory, but we don't need it */*
> default:
> [...]
>
> /*------------------------------Fixed
> code---------------------------------*/
>
> /* {{{ proto int pg_exec([int connection,] string query)
> Execute a query */
> PHP_FUNCTION(pg_exec)
> {
> zval **query, **pgsql_link = NULL;
> int id = -1;
> PGconn *pgsql;
> PGresult *pgsql_result;
> ExecStatusType status;
> pgsql_result_handle *pg_result;
>
> switch(ZEND_NUM_ARGS()) {
> case 1:
> if (zend_get_parameters_ex(1, &query)==FAILURE) {
> RETURN_FALSE;
> }
> id = PGG(default_link);
> CHECK_DEFAULT_LINK(id);
> break;
> case 2:
> if (zend_get_parameters_ex(2, &pgsql_link, &query)==FAILURE) {
> RETURN_FALSE;
> }
> break;
> default:
> WRONG_PARAM_COUNT;
> break;
> }
>
> ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL
> link", le_link, le_plink);
>
> convert_to_string_ex(query);
> pgsql_result = PQexec(pgsql, Z_STRVAL_PP(query));
>
> if (pgsql_result) {
> status = PQresultStatus(pgsql_result);
> } else {
> status = (ExecStatusType) PQstatus(pgsql);
> }
> switch (status) {
> case PGRES_EMPTY_QUERY:
> case PGRES_BAD_RESPONSE:
> case PGRES_NONFATAL_ERROR:
> case PGRES_FATAL_ERROR:
> php_error(E_WARNING, "PostgreSQL query failed: %s",
> PQerrorMessage(pgsql));
> RETURN_FALSE;
> break;
> case PGRES_COMMAND_OK:
> PQclear(pgsql_result); /* vacum the current execution
> and save 1k ! :) */
> /* successful command that did not return rows */
> default:
> if (pgsql_result) {
> pg_result = (pgsql_result_handle *)
> emalloc(sizeof(pgsql_result_handle));
> pg_result->conn = pgsql;
> pg_result->result = pgsql_result;
> pg_result->row = -1;
> ZEND_REGISTER_RESOURCE(return_value, pg_result, le_result);
> /*
> return_value->value.lval =
> zend_list_insert(pg_result,le_result);
> return_value->type = IS_LONG;
> */
> } else {
> RETURN_FALSE;
> }
> break;
> }
> }
> /* }}} */
>
>
-----------------------------------------------------------------------
PHP: Scripting the Web - [EMAIL PROTECTED]
All your branches are belong to me!
SRM: Script Running Machine - www.vl-srm.net
-----------------------------------------------------------------------
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php