OCI8 1.1 announce

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

Yesterday OCI8 extension have been updated in the PHP CVS (HEAD only).
This updated driver resolves a large amount of bug reports and adds some improvements both functionality and performance, and much better documentation (see here: http://php.net/oci8).

A lot of time has been invested in updating this driver including help from Wez Furlong and the OCI team which gave a lot of feedback on how to do things the best and most efficient way.

Version 1.1 is available through PECL (http://pecl.php.net). It works with PHP 5 and PHP 4, so please go ahead and install it. Feel free to send me feedback or open a bug report via bugs.php.net if you find something.

This new version should be 100% compatible with the old one, so you don't have to make any changes to your scripts to switch to the new version.

To install it run this command:
pear install oci8-beta

Make sure that you have PHP built without oci8 enabled if you're going to build the new oci8 as a shared extension.

The following is a list of many issues that were dealt with including new functionality (such as statement caching and data prefetching):

Major changes:
--------------
- The connection handling algorithm was rewritten. That should add stability and fix all non-reproducible crashes etc; - The extension was refactored and divided into several files to improve readability and to make it easier to maintain;
- Added support for statement caching;
- Added support for privileged connections using external credentials;
- Added new INI options to manage persistent connections;
- Fixed oci_close() to close connections correctly.

Fixed bugs:
-----------
#33915 - crash in _oci_close_session
#26393 - Segfault during request shutdown in _oci_close_session() (oci8.c:2443)

#32741 - hang on ociexecute() with collections (only with 10g, works with 9i)
#32325 - can't retrieve collection using OCI8
#33583 - Apache1.3.33 Segmentation fault with php5 & OCI_New_Collection

#32361 - connection oci_connect stay persist after process the php
#29013 - multiple logins cause handles become invalid
#28944 - OCITypeByName: OCI-21522 with two connections

Fixed by rewriting the connection handling

#32140 - NVARCHAR columns are truncated
#31042 - oci_fetch_* sets field value to false
#27156 - OCIFetchInto returns false as column value when column contains >1 umlaut

Fixed by multiplying the buffer size by 3.

#33866 - OCIlogon do not returns conn resource for account with expired paswd
#33365 - logon fails when password expires

Fixed by adding the new oci_password_change() call syntax.

#33159 - DB-connect via webserver fails after DB-restart ORA-24327
#30808 - oci8 cannot connect after restarting DB
#30127 - lost oracle connection. need restart apache.
#29902 - oci8 doesn't disconnect sessions, overloads oracle server
#29779 - (the same issue with the Oracle server going offline)
#26829 - Killed Oracle Sessions openned with OCIPLogon()

Fixed by adding oci8.ping_interval option.

#32988 - ext/oci8: OCI doesn't support DB external authentication

Fixed by adding support of external credentials (turned off by default).

New features:
-------------
- Connections are now using private environment handles (this fixed a lot of mysterious segfaults especially under high load)

-Implemented statement caching (if supported by the Oracle version). Use oci8.statement_cache_size option to tune the cache size or turn caching off.

- Persistent connections are checked for liveness. Use oci8.ping_interval option to tune frequency of these checks.

- Implemented privileged connects using oci_connect()/ocilogon() functions. Use oci8.privileged_connect option to turn it On/Off.

- oci_password_change() can be used to change password in case you are not able to connect to the Oracle server. To do that call use oci_password_change($dbname, $user, $old_password, $new_password) syntax.


New ini options:
----------------
- oci8.statement_cache_size Used to tune statement cache size or to turn statement caching off (with -1). The default value is 20.

- oci8.ping_interval Used to tune the frequency of checks done on persistent connections or to turn pings off (with -1). The default value is 60, which means that a ping will be initiated on each call to oci_pconnect() that takes place after the connection has been idle for 60 seconds.

- oci8.max_persistent Used to specify the maximum number of persistent connections per process. The default value is -1, which means there is no limit.

- oci8.persistent_timeout
Used to specify the maximum length of time a persistent connection will be held idle. The default value is -1, which means there is no limit.

- oci8.privileged_connect
Used to turn on/off ability to connect to Oracle server as SYSDBA/SYSOPER using external credentials. The default value is Off.

- oci8.default_prefetch
Used to specify size of the buffer which is used when prefetching statements. The default value is -1, which means the prefetching is off.
- oci8.old_oci_close_semantics
For BC reasons only. Enabling it means that oci_close() will do nothing; the connection will not be closed until the end of the script.

--
Wbr, Antony Dovgal

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux