[PHP-users 21184]Re: pgsqlconnectエラー

Tatsuo Ishii t-ishii @ sra.co.jp
2004年 4月 8日 (木) 13:26:58 JST


石井です.

> > ただ,これでポート番号はどうやって指定するのでしょう?
> 
>   上記の例では protocol が unix なのでポート番号を指定する必要はありま
> せんよね。

"unix"というのは,Unixドメインソケットで接続するのという意味ですよね?
だとすると,PEAR DBからpg_connectを呼び出すときに,「ポート番号」を渡
すことができるようになっていないと困ると思います.
# 結局ポート番号からUnixドメインソケットのファイル名をpg_connectから更
# に呼び出されるlibpqの関数で作っているだけなんですが.

>   汎用的な話ならば、DB::parseDSN() の先頭に以下のように書かれています
> ので、これの自分で必要な部分を埋めた配列を作ればよいです。
> 
>         $parsed = array(
>             'phptype'  => false,
>             'dbsyntax' => false,
>             'username' => false,
>             'password' => false,
>             'protocol' => false,
>             'hostspec' => false,
>             'port'     => false,
>             'socket'   => false,
>             'database' => false,
>         );
> 
>   DB::parseDSN() の役目は、DSN 文字列を解析して上記連想配列に値を格納
> することです。最初から配列を渡してやれば、解析処理が省かれるし、思うよ
> うに値がセットされて悩むこともないです。

ただこの場合でも,結局どうやってpg_connectに渡す引数が作られているのか
を意識しないと駄目だと思うのですよ.

たぶん,Unixドメインソケットを使って「ポート」番号5433で接続するために
は,

'protocol' => 'tcp'
'hostspec' => ''
'port' => '5433'

とかしないといけないと思うのですが.
--
Tatsuo Ishii


PHP-users メーリングリストの案内