pg_connection_status()
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
获得连接状态
说明
pg_connection_status(resource $connection): int
pg_connection_status()返回一个连接的状态。可能的状态为PGSQL_CONNECTION_OK和PGSQL_CONNECTION_BAD。
Example #1 pg_connection_status()例子
<?php $dbconn = pg_connect("dbname=publisher") or die("Could not connect"); $stat = pg_connection_status($dbconn); echo 'connection_status: '.$stat; ?>
Example #2 pg_connection_status()例子
<?php $dbconn = pg_connect("dbname=publisher") or die("Could not connect"); $stat = pg_connection_status($dbconn); echo 'connection_status: '.$stat; ?>
参见pg_connection_busy()。
Being careful with the comparison operators is not enough: <?php if (pg_connection_status($link)===PGSQL_CONNECTION_BAD) reconnect($link); ?> The reconnect won't be trigged when $link is null. The manual is just wrong, there are three return values: PGSQL_CONNECTION_OK, PGSQL_CONNECTION_BAD, null
If the connection variable is NULL this function returns 0 in PHP 5.0.2. Havent figured out any more erratic values for the connection variable but be careful.
The wiki page doesn't currently reflect that, but if you're passing PGSQL_CONNECT_ASYNC to pg_connect, creating the connection won't block and transitions through extra states expressed by those constants. PGSQL_CONNECTION_AUTH_OK PGSQL_CONNECTION_AWAITING_RESPONSE PGSQL_CONNECTION_MADE PGSQL_CONNECTION_SETENV PGSQL_CONNECTION_SSL_STARTUP PGSQL_CONNECTION_STARTED
I think zytox is incorrect, at least in PHP 5.0.4. It returns null, but you have to be careful with your comparison operators. As an example: <?php unset($null); if (pg_connection_status($null)===PGSQL_CONNECTION_OK) echo 'this is not called'; if (pg_connection_status($null)==PGSQL_CONNECTION_OK) echo 'this is called because NULL==0 is true'; ?>