- - PR -
ocinlogon+ociplogon@php4
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-03-13 14:32
お世話になります。
oci8(PHP4)+Oracle(9i/10g)についてご教授ください。 【開発環境】 OS :WindowsXP Pro sp2 HTTPD:Apache2.2 PHP :4.4.1 DB : Oracle 10g(9i@9.2.0.5.0もある) 【やりたい事】 ・秒間20〜30リクエスト程度をこなしたい ・トランザクション処理を行いたい 【課題】 ・ocinlogonで17セッションを超えたあたりからDB接続が失敗するようになり ORA-12516が発生する事がある。 【ご教授いただきたいこと】 ・ociplogon(oci_pconnect)とocinlogon(oci_new_connect)を併用した場合、 ocinlogonを利用してもpconecctが作成したコネクションを再利用するのでしょうか? ※検証1をご覧ください ・上記の事を実現するためのその他の方法 現在、oci8のocinlogon(coi_new_connect)で実装を行っていますが、 上記の課題が発生し、解決策を模索しております。 DBのセッション数を増やせれば問題は解決しそうなのですが、 政治的な問題もあり、難しい状況で技術的にこれを解決できればと思っています。 ociplogon(oci_pconnect)を利用すれば、コネクション数の問題は解決するのですが、 以前MySQLでpconnectを利用して、トランザクション処理をしたところ データの不整合が発生した記憶があり、この方法では駄目だと考えています。 そこで、トランザクション処理をする場合はocinlogon(oci_new_connect)を利用して 処理しようと考え、『検証1』をおこなってみました。 【検証1】 1.pconnectのコネクションが無い状態でocinlogonを繰り返す。 #netstat(win)上ではポート1251のTIME_WAITが複数表示されます。 2.pconnectのコネクションが有る状態でocinlogonを繰り返す。 #netstat(win)上ではポート1251のESTABLISHEDが1つしか表示されません。 1.2.を見ると、ocinlogon(oci_new_connect)を行っても 新規にコネクションを開かずに、pconnectで作成したコネクションを利用しているように見えます。 PHPのマニュアルを見る限り、ocinlogonは半強制的に新しいコネクションを作成すると書かれています。 これはWindow環境に依存するのか、そうでないのかお解かりになる方いらっしゃいますでしょうか? よろしくお願い致します。 |
1