|
Posted by Antony Dovgal on 09/07/05 19:05
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
[Back to original message]
|