[PHP-users 4970] Re: バグ?仕様?複数のpostgre 接続リソースを定数にできない?

Yasuo Ohgaki php-users@php.gr.jp
Fri, 25 Jan 2002 14:04:13 +0900


大垣です。

Y.Watanabe wrote:
> わたなべです。
> 
> phpのバグなんだか仕様なんだかわからないことに遭遇してまして、
> みなさんのご意見をきかせてください。
> 

*SNIP*

> 問題となるスクリプトは以下のとおり。
> <?php
>   define ("DBCONN01",pg_connect("dbname=db01 user=username"));
>   define ("DBCONN02",pg_connect("dbname=db02 user=username"));
>   pg_exec(DBCONN01,"select * from hogehoge");
>   pg_exec(DBCONN02,"select * from fugafuga");
> ?>

んんん。
PHPのdefineはC等の#defineの様なマクロではありません。

> 
> ちなみに、
> <?php
>   define ("DBCONN01",pg_connect("dbname=db01 user=username"));
>   pg_exec("DBCONN01","select * from hogehoge");
> ?>
> のように定数としてのpostgreリソースがひとつしかない場合には
> 正常に作動します。

これが動作する事自体がおかしいです。確認してみます。
(多分、デフォルトコネクションのハンドリングがおかしい為と思います)

ZendEngineの動作もおかしいのでこちらも確認してみます。

> 
> しかし、
> <?php
>   define ("DBCONN01",pg_connect("dbname=db01 user=username"));
>   $dbconn02 = pg_connect("dbname=db02 user=username");
>   pg_exec(DBCONN01,"select * from hogehoge");
>   pg_exec($dbconn02,"select * from fugafuga");
> ?>
> のように、ふたつの接続リソースの片方を定数として、もう片方を
> 通常の変数とした場合にも、やはりWEBサーバが反応しなくなります。

pg_exec()の第一引数はPostgreSQLのコネクションリソースを必ず
渡してください。

このメールの様にdefineをマクロの様に使ったコードが動くこと自体
がバグです。

PHP-4.1.1で動作確認して問題が発生するようであれば、バグレポート
http://bugs.php.net/
をお願いします。

-- 
Yasuo Ohgaki
yohgaki@dd.iij4u.or.jp

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/