pg_parameter_status

(PHP 5, PHP 7, PHP 8)

pg_parameter_statusサーバーのパラメータ設定を検索する

説明

pg_parameter_status(PgSql\Connection $connection = ?, string $param_name): string

サーバーのパラメータ設定を検索します。

いくつかのパラメータについては、接続の確立時や値の変更時にサーバーから 自動的に通知されます。pg_parameter_status() は これらの設定問い合わせるために使用可能です。指定したパラメータが存在する 場合にその値を、存在しない場合に false を返します。

PostgreSQL 8.0 で指定できるパラメータには以下が含まれます。 server_versionserver_encodingclient_encodingis_superusersession_authorizationDateStyleTimeZone および integer_datetimesserver_encodingTimeZone および integer_datetimes は 8.0 より前のバージョンでは指定できません)。 server_versionserver_encoding および integer_datetimes は、PostgreSQL の稼動中には変更できないことに注意しましょう。

PostgreSQL 7.3 以前のサーバーはパラメータ設定を通知する機能を持っていません。 しかし、pg_parameter_status() には server_version および client_encoding を取得する機能を組み込んでいます。これらの値を取得するためにアプリケーションで アドホックなコードを書くのではなく、pg_parameter_status() を使用することを推奨します。

警告

7.4 より前の PostgreSQL サーバーでは、接続の確立後に SET を用いて client_encoding を変更しても pg_parameter_status() には反映されません。

パラメータ

connection

PgSql\Connection クラスのインスタンス。 connection が指定されない場合は、デフォルトの接続を使います。 デフォルトの接続とは、pg_connect() または pg_pconnect() によって確立された直近の接続です。

警告

PHP 8.1.0 以降では、デフォルトの接続を使うことは推奨されなくなりました。

param_name

指定可能な param_name には以下が含まれます。 server_versionserver_encodingclient_encodingis_superusersession_authorizationDateStyleTimeZone および integer_datetimes。 この値は、大文字小文字を区別するので注意して下さい。

戻り値

パラメータの値を文字列で返します。失敗した場合や param_name が間違っている場合には false を返します。

変更履歴

バージョン 説明
8.1.0 connection は、PgSql\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。

例1 pg_parameter_status() の例

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Could not connect");

echo
"Server encoding: ", pg_parameter_status($dbconn, "server_encoding");
?>

上の例の出力は以下となります。

Server encoding: SQL_ASCII

add a note add a note

User Contributed Notes 2 notes

up
0
Ondej Bouda
8 years ago
Although PostgreSQL generally recognizes configuration parameters in a case-insensitive fashion (e.g., "SHOW datestyle" shows the "DateStyle" value), the pg_parameter_status() function is case sensitive.
up
-2
Anonymous
5 years ago
pg_parameter_status() returns boolean FALSE for 'client', 'protocol' and 'server'.
Use pg_version() instead to get the software version numbers and the protocol.
To Top