Hello,
At work, we have an IBM Db2 database. Until recently, it lived within our local
network,
but has since been moved off-site (to the cloud). We connect to it using an
iSeries Access
ODBC driver. For communication, I typically use PHP's ODBC interface (sometimes
other
languages).
When the database was local, everything seemed to run smoothly; but now that it
is off-site,
fetching results from SELECT queries is very slow (12 seconds for 100 rows). I
thought at first
it was an issue on our host's side (or even our network), but all tests
indicated otherwise. A
proof of this is that I made a C program to run the same query (using the same
driver), and it
fetched the results within milliseconds after the query completed.
I should perhaps point out that running the queries is fast, it's only fetching
the result rows
that is slow.
The only comments I could find that mentioned a similar issue was for people
that were using
a Db2 driver: if they passed the "SQL_CUR_USE_ODBC" option to the
"odbc_connect" function,
then their result collection was sped up. I tried that, but it made no
difference (perhaps because
I'm not using a Db2 driver, per se, but an iAccess driver).
I'm not so sure that this is an error with PHP so much as a setting that needs
to be tweaked;
but I can't seem to find what setting that might be. I can see there is a
default_cursortype option
in the php.ini file, but I don't know what options are available or how to
properly set the value.
I also tried using PDO and ADOdb, but both resulted in the same slowness (I'm
guessing because
they just wrap the ODBC interface).
So, as I my first choice is not to re-write a bunch of scripts into C, I was
wondering if any of you might
know (or have ideas as to) what the issue might be.
The PHP versions I have been using are 8.3.2 and 8.3.3, and I've tried the test
on both Windows and
Linux.
Thanks,
Zachary