cvs: pear /PECL/session_pgsql README session_pgsql.c session_pgsql.h

From: Date: Tue, 15 Jan 2002 03:21:04 +0000
Subject: cvs: pear /PECL/session_pgsql README session_pgsql.c session_pgsql.h
Groups: php.pear.cvs 
Request: Send a blank email to pear-cvs+get-1940@lists.php.net to get a copy of this message
yohgaki Mon Jan 14 22:21:04 2002 EDT Modified files: /pear/PECL/session_pgsql README session_pgsql.c session_pgsql.h Log: Added session access counter # The reason why I add these are I would like to query # with SQL. # BTW, I just did simple bench against equiv. user save # handler. This module is 2 times faster than user save # handler version :) Index: pear/PECL/session_pgsql/README diff -u pear/PECL/session_pgsql/README:1.5 pear/PECL/session_pgsql/README:1.6 --- pear/PECL/session_pgsql/README:1.5 Mon Jan 14 09:50:17 2002 +++ pear/PECL/session_pgsql/README Mon Jan 14 22:21:04 2002 @@ -23,8 +23,8 @@ sess_warning integer, sess_notice integer, sess_err_message text, - sess_reserved7 integer, - sess_reserved8 integer + sess_counter integer, + sess_reserved integer ); CREATE INDEX php_session_idx ON php_session USING BTREE (sess_id); @@ -56,9 +56,13 @@ barbage collection is performed. This module is much more efficient than user handlers written in PHP. -How fast it is +How fast pgsql session save handler is -It is as fast as files session save handler on my test system. +Here is summary of simple benchmark tests. This module is as fast as +files session save handler on my test system. I also compared with +equivalent user save handler with PostgreSQL database. This module is +2 times faster than PHP script version. msession handler is about 30% +faster than pgsql save handler. mm handler does not work for me :( How to customize @@ -68,9 +72,8 @@ fields. User fields are must be defined after mod_pgsql fields. Known Problem - - Nothing. Please report if you find one. + - Many. ToDo - Simpile fail over - Load balancing - - Automatic session table creation Index: pear/PECL/session_pgsql/session_pgsql.c diff -u pear/PECL/session_pgsql/session_pgsql.c:1.11 pear/PECL/session_pgsql/session_pgsql.c:1.12 --- pear/PECL/session_pgsql/session_pgsql.c:1.11 Mon Jan 14 09:50:17 2002 +++ pear/PECL/session_pgsql/session_pgsql.c Mon Jan 14 22:21:04 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session_pgsql.c,v 1.11 2002/01/14 14:50:17 yohgaki Exp $ */ +/* $Id: session_pgsql.c,v 1.12 2002/01/15 03:21:04 yohgaki Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -131,8 +131,8 @@ "sess_warning integer, " "sess_notice integer, " "sess_err_message text, " - "sess_reserved1 integer, " - "sess_reserved2 integer); " + "sess_counter integer, " + "sess_reserved integer); " "CREATE INDEX php_session_idx ON php_session USING BTREE (sess_id);"; int ret = SUCCESS; @@ -344,7 +344,7 @@ PGconn *pg_link; PGresult *pg_result; char query[QUERY_BUF_SIZE+1]; - char *query_tpl = "SELECT sess_expire, sess_data FROM php_session WHERE sess_id = '%s';"; + char *query_tpl = "SELECT sess_expire, sess_counter, sess_data FROM php_session WHERE sess_id = '%s';"; int ret = FAILURE; ExecStatusType status; @@ -403,8 +403,9 @@ PS_PGSQL(sess_del) = 1; } else { + PS_PGSQL(sess_cnt) = (int)atoi(PQgetvalue(pg_result, 0, 1)); /* PQgetvalue reuturns "" for NULL */ - *val = PQgetvalue(pg_result, 0, 1); + *val = PQgetvalue(pg_result, 0, 2); if (*val) { *vallen = strlen(*val); *val = safe_estrndup(*val, *vallen); @@ -440,12 +441,12 @@ char *query_delete = "DELETE FROM php_session WHERE sess_id = '%s';"; char *query_insert = - "INSERT INTO php_session (sess_id, sess_created, sess_modified, sess_expire, sess_data) " - "VALUES ('%s', %d, %d, %d, '%s');"; + "INSERT INTO php_session (sess_id, sess_created, sess_modified, sess_expire, sess_counter, sess_data) " + "VALUES ('%s', %d, %d, %d, 1, '%s');"; char *query_update = "UPDATE php_session SET sess_data = '%s', sess_modified = %d , sess_expire = %d " "WHERE sess_id = '%s';"; - int ret = FAILURE; + int len, ret = FAILURE; ELOG("WRITE Called"); pg_link = php_ps_pgsql_get_link(key); @@ -463,6 +464,7 @@ now = time(NULL); exp = now + PS(gc_maxlifetime); + val = php_addslashes(val, strlen(val), &len, 0 TSRMLS_CC); if (PS_PGSQL(sess_new)) { /* INSERT */ query_len = strlen(query_insert)+vallen+strlen(key)+120; @@ -478,7 +480,8 @@ PQsendQuery(pg_link, query); } efree(query); - PQsendQuery(pg_link, "END;"); +/* PQsendQuery(pg_link, "END;"); */ + PQexec(pg_link, "END;"); return SUCCESS; } Index: pear/PECL/session_pgsql/session_pgsql.h diff -u pear/PECL/session_pgsql/session_pgsql.h:1.5 pear/PECL/session_pgsql/session_pgsql.h:1.6 --- pear/PECL/session_pgsql/session_pgsql.h:1.5 Mon Jan 14 09:50:17 2002 +++ pear/PECL/session_pgsql/session_pgsql.h Mon Jan 14 22:21:04 2002 @@ -50,6 +50,7 @@ int servers; int sess_new; int sess_del; + int sess_cnt; int gc_interval; time_t last_gc; int maxlifetime;

« previous php.pear.cvs (#1940) next »