PHP Conference Japan 2024

pg_connection_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_connection_status 取得連線狀態

說明

pg_connection_status(PgSql\Connection $connection): int

pg_connection_status() 會回傳指定 connection 的狀態。

參數

connection

一個 PgSql\Connection 實例。

更新日誌

版本 說明
8.1.0 connection 參數現在需要一個 PgSql\Connection 實例;先前需要的是一個 資源

範例

範例 #1 pg_connection_status() 範例

<?php
$dbconn
= pg_connect("dbname=publisher") or die("無法連線");
$stat = pg_connection_status($dbconn);
if (
$stat === PGSQL_CONNECTION_OK) {
echo
'連線狀態良好';
} else {
echo
'連線狀態不良';
}
?>

參見

新增筆記

使用者貢獻的筆記 4 則筆記

6
Mathieu De Zutter
18 年前
小心使用比較運算子是不夠的

<?php
if (pg_connection_status($link)===PGSQL_CONNECTION_BAD)
reconnect($link);
?>

當 $link 為 null 時,不會觸發重新連線。

手冊內容有誤,實際上有三個回傳值:PGSQL_CONNECTION_OK、PGSQL_CONNECTION_BAD 和 null
2
zytox at hotmail dot com
19 年前
在 PHP 5.0.2 中,如果連線變數為 NULL,這個函式會回傳 0。還沒找出連線變數其他不穩定的值,但請小心。
2
david dot tulloh at infaze dot com dot au
19 年前
我認為 zytox 的說法不正確,至少在 PHP 5.0.4 中是如此。
它會回傳 null,但您必須小心使用比較運算子。

例如
<?php
unset($null);
if (
pg_connection_status($null)===PGSQL_CONNECTION_OK)
echo
'這不會被呼叫';
if (
pg_connection_status($null)==PGSQL_CONNECTION_OK)
echo
'這會被呼叫,因為 NULL==0 為真';
?>
-1
匿名
6 年前
Wiki 頁面目前沒有反映這一點,但如果您將 PGSQL_CONNECT_ASYNC 傳遞給 pg_connect,則建立連線不會阻塞,並且會透過這些常數表示的額外狀態進行轉換。

PGSQL_CONNECTION_AUTH_OK
PGSQL_CONNECTION_AWAITING_RESPONSE
PGSQL_CONNECTION_MADE
PGSQL_CONNECTION_SETENV (設定環境變數的連線)
PGSQL_CONNECTION_SSL_STARTUP (啟動 SSL 連線)
PGSQL_CONNECTION_STARTED (連線已啟動)
To Top