On Thu, 2004-11-18 at 11:41 -0700, [EMAIL PROTECTED] wrote:
> During my presentation at the PHP Conference in Frankfurt I put
> out a call for participation in creating a roadmap for Oracle 
> connectivity in PHP.
> When I get back to work (I'm on a short vacation in Europe with 
> intermittent email access) I'll be following up on this.  While I'm
> away, feel free to fill my inbox with suggestions and discussion
> of your application architecture requirements.

I've been recently looking into the OCI8 extension.
Alas, with PHP5 and multithreaded web servers (Apache2 et.al.), the
connection handling seems to be completly broken.

Using PHP5 and the current oci8 module in an mt environment leads to
sessions stacking up on a single server connection without getting
closed nor reused. I didn't try the classic multi process environment,
but I suspect the same broken behaviour to show up.

So what you get right now is a non working session multiplexing (ala
Oracle MTS) which surely is not what people want when the need
"connection pooling".

Another area where PHP Oracle support needs improvement is national
charset support. Currently NCLOBs simply don't work. 

Additionaly, the LOB handling support is more complex (using implicit
LOB descriptors) than it need to be, taking into consideration the LOB
handling capabilities introduced with OCI 9.2.

Using the new thread safe hash lists of PHP5, I've successfully
implemented (let's say proof of concept quality ;-)) an extension based
on the current OCI8 code that can use native OCI session pooling
(instead of implementing own connection pooling code) and is able to
handle national character data while mostly retaining backwards
compatability - "normal" connects are still possible besides predefinded

So what to do?

While I see great potential in PDO, having a common API as in JDBC or
ODBC would be great, it seems there isn't much development going in that
Additionaly, every application would need a major rewrite to switch from
the current oci8 extension to something different.

So, building on the existing OCI8 extension and improving it in the
afore mentioned areas seems to a pragmatic approach while retaining PHP
API compatability for people already using Oracle with PHP.

This would mean dropping support for client libraries before Oracle 9.2,
making it possible to throw away much of the convoluted legacy stuff in
the connection / LOB handling code.
Remember, with OCI client 9.2, you can still connect to 8.1 databases.
If there is still demand for connecting to pre 8.1 databases, people
would have to stick with PHP4, which seems to me reasonable.

Any comments are welcome to better support the greatest RDBMS with
PHP ;-)

Andreas Karajannis
mediaworx berlin AG

Fon (030) 2 75 80 - 266
Fax (030) 2 75 80 - 200

PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to