2008年7月17日

[PHP-users 33859]oci_connect()の2回目以降の接続ハンドル

北村と申します。

よろしくお願いします。

OCI8関数のoci_connect()をループの中で使用しています。

(実験コード)
<?php

for ($i=0;$i<10;$i++){
$conn = oci_connect("scott", "tiger", "hogehoge");
echo $i+1 . "つ目 " . $conn . "<br />";
}
?>

マニュアルを見ると
http://www.phpmanual.jp/function.oci-connect.html

----引用はじまり----
注意: 同じパラメータを使用して 2 回目やそれ以降に oci_connect() がコー
ルされた場合、 最初のコールで返された接続ハンドルを返します。 これは 1
つのハンドルに対して発行されたクエリは、 他のハンドルにも適用されること
を意味します。
----引用ここまで----

となっています。

マニュアル通りだと$connにはループを何回しても'同じリソースID'がセットさ
れるように思うのですが、ブラウザで見ると

1つ目 Resource id #3
2つ目 Resource id #5
3つ目 Resource id #7
4つ目 Resource id #9
5つ目 Resource id #11
6つ目 Resource id #13
7つ目 Resource id #15
8つ目 Resource id #17
9つ目 Resource id #19
10つ目 Resource id #21

と毎回異なるリソースIDが出力されています。
#10つ目という表現はお愛嬌

実際に運用しているスクリプトでは、ループの途中で以下のような警告が出ます。

PHP Warning: oci_connect(): OCISessionBegin: ORA-00604: error occurred
at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded in /home/hoge/db.php on
line 25

私のマニュアルの解釈が間違っているのでしょうか。
それともoci_connect()関数の挙動がマニュアルと違うのでしょうか。

何かご存知の方は情報をお願いいたします。


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2008年7月17日 13:19
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75422
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。