|
|
|
|
Re: PHP5.2.5からOracle10gへの接続
投稿時刻:
2010/08/12 13:26
Chip'n Mole さんへの返信です。
|
|
この件ですが、oci_connect の返り値として、数万回に1回未満のオーダーで、 false でもなく接続リソースでもない値を返し、なおかつ E_WARNING を発生させます。(PHP 5.2.6 ですので、OCI8 の Version は 1.2系です) 下記のようにset_error_handlerでコールバック関数を登録して、エラーメッセージが設定されている場合は、返り値を強制的に変更するような回避策が考えられます。 なお、顧客特定防止のため、実際の対策コードとは各所変更しています。 class someClass { protected $_errMsg; function someFunc($id, $password, $database, $language) { $this->_errMsg = NULL; set_error_handler(array($this, 'someCallBack'), E_WARNING); $con = oci_connect($id, $password, $database, $language); restore_error_handler(); if ($this->_errMsg) { $con = 'someValue'; } return; }
public function someCallBack($errNo, $errMsg) { $this->_errMsg = $errMsg; return true; } }
|
|