summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_driver.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2007-06-27 02:00:46 +0000
committerIlia Alshanetsky <iliaa@php.net>2007-06-27 02:00:46 +0000
commite8de152ddd30e85ef2352b8c227c3a60aaa727d0 (patch)
tree0af24627bf777dd295287cb52ec60e2c41449f99 /ext/pdo_pgsql/pgsql_driver.c
parente5909f149c569c64a24afbd053a5e6a85ca263d3 (diff)
downloadphp-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.c13
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 */
};