diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2007-06-27 02:00:46 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2007-06-27 02:00:46 +0000 |
commit | e8de152ddd30e85ef2352b8c227c3a60aaa727d0 (patch) | |
tree | 0af24627bf777dd295287cb52ec60e2c41449f99 /ext/pdo_pgsql/pgsql_driver.c | |
parent | e5909f149c569c64a24afbd053a5e6a85ca263d3 (diff) | |
download | php-git-e8de152ddd30e85ef2352b8c227c3a60aaa727d0.tar.gz |
Added persistent connection status checker to pdo_pgsql
Diffstat (limited to 'ext/pdo_pgsql/pgsql_driver.c')
-rw-r--r-- | ext/pdo_pgsql/pgsql_driver.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 92ee788f3c..6727c6b8de 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -476,6 +476,17 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value return 1; } +/* {{{ */ +static int pdo_pgsql_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; + if (PQstatus(H->server) == CONNECTION_BAD) { + PQreset(H->server); + } + return (PQstatus(H->server) == CONNECTION_OK) ? SUCCESS : FAILURE; +} +/* }}} */ + static int pdo_pgsql_transaction_cmd(const char *cmd, pdo_dbh_t *dbh TSRMLS_DC) { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; @@ -650,7 +661,7 @@ static struct pdo_dbh_methods pgsql_methods = { pdo_pgsql_last_insert_id, pdo_pgsql_fetch_error_func, pdo_pgsql_get_attribute, - NULL, /* check_liveness */ + pdo_pgsql_check_liveness, /* check_liveness */ pdo_pgsql_get_driver_methods /* get_driver_methods */ }; |