cvs: php4 /ext/pgsql pgsql.c

From: Date: Mon, 20 May 2002 01:02:45 +0000
Subject: cvs: php4 /ext/pgsql pgsql.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-12006@lists.php.net to get a copy of this message
yohgaki Sun May 19 21:02:45 2002 EDT Modified files: /php4/ext/pgsql pgsql.c Log: Improve large object performance. pg_lo_read() and pg_lo_read_all() should perform much better now. Fixed Old API support for pg_lo_import(). Index: php4/ext/pgsql/pgsql.c diff -u php4/ext/pgsql/pgsql.c:1.199 php4/ext/pgsql/pgsql.c:1.200 --- php4/ext/pgsql/pgsql.c:1.199 Fri May 10 23:01:08 2002 +++ php4/ext/pgsql/pgsql.c Sun May 19 21:02:29 2002 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql.c,v 1.199 2002/05/11 03:01:08 yohgaki Exp $ */ +/* $Id: pgsql.c,v 1.200 2002/05/20 01:02:29 yohgaki Exp $ */ #include <stdlib.h> @@ -1851,12 +1851,14 @@ } /* }}} */ +#define PGSQL_LO_READ_BUF_SIZE 8192 + /* {{{ proto string pg_lo_read(resource large_object [, int len]) Read a large object */ PHP_FUNCTION(pg_lo_read) { zval **pgsql_id, **len; - int buf_len = 1024, nbytes; + int buf_len = PGSQL_LO_READ_BUF_SIZE, nbytes; char *buf; pgLofp *pgsql; @@ -1925,9 +1927,8 @@ zval **pgsql_id; int i, tbytes; volatile int nbytes; - char buf[8192]; + char buf[PGSQL_LO_READ_BUF_SIZE]; pgLofp *pgsql; - int output=1; switch(ZEND_NUM_ARGS()) { case 1: @@ -1943,11 +1944,9 @@ ZEND_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_id, -1, "PostgreSQL large object", le_lofp); tbytes = 0; - while ((nbytes = lo_read((PGconn *)pgsql->conn, pgsql->lofd, buf, 8192))>0) { - for(i=0; i<nbytes; i++) { - if (output) { (void) PUTC(buf[i]); } - } - tbytes += i; + while ((nbytes = lo_read((PGconn *)pgsql->conn, pgsql->lofd, buf, PGSQL_LO_READ_BUF_SIZE))>0) { + php_body_write(buf, nbytes TSRMLS_CC); + tbytes += nbytes; } RETURN_LONG(tbytes); } @@ -1974,7 +1973,7 @@ CHECK_DEFAULT_LINK(id); } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc TSRMLS_CC, - "rs", &pgsql_link, &file_in, &name_len) == SUCCESS) { + "sr", &file_in, &name_len, &pgsql_link ) == SUCCESS) { php_error(E_NOTICE, "Old API for %s() is used.", get_active_function_name(TSRMLS_C)); } else {

« previous php.cvs (#12006) next »