Bug #67002 [NEW]: function oci_fetch_all & similar really low

From: Date: Wed, 02 Apr 2014 00:36:21 +0000
Subject: Bug #67002 [NEW]: function oci_fetch_all & similar really low
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-185025@lists.php.net to get a copy of this message
From: aurelien dot lequoy at esysteme dot com Operating system: Red Hat 6.3 PHP version: 5.5.10 Package: OCI8 related Bug Type: Bug Bug description:function oci_fetch_all & similar really low Description: ------------ I migrate a really big application from PHP 4.4 to PHP 5.5 some screen in PHP 4.4 took 1 sec or less, when I migrate to PHP 5.5 I got some trouble with execution time. The query took about ~1 sec in both case. after : oci_fetch_all php 4.4 => 1 sec oci_fetch_all php 5.5 => 16~18 sec (for the following query) I observed same problem with all other function like : - oci_fetch_array - oci_fetch_object with a loop in PHP About Oracle, I tried all version available of client on website : 10.1 11.2 12.1 .. About my installation : PHP 5.5 (from remi repo) Red hat 6.3 on 64 bit rpm -i client rpm -i devel pecl install oci8 Test script: --------------- select used : (return about 8 000 lines for 29 fields) WITH LISTE_IMPUTATION AS ( SELECT 'COURANTE' TYLIGNE, WPK.CDPRJ, WPK.CDWPK, PRJ.LIPRJ, WPK.LIWPK, NVL( ( SELECT INVALSIM FROM DBASIF.FF_HWP HWP WHERE HWP.CDPRJ =WPK.CDPRJ AND HWP.CDWPK =WPK.CDWPK AND HWP.DTMOISDHD='201402'),WPK.INVALSIM) INVALSIM, ( SELECT INVALWPM FROM DBASIF.FF_HWP HWP WHERE HWP.CDPRJ =WPK.CDPRJ AND HWP.CDWPK =WPK.CDWPK AND HWP.DTMOISDHD='201402') INVALWPM, WPK.CDWPL, ( SELECT LIUSER FROM DBASIF.IC_USER WHERE CDUSER=WPK.CDWPL) LIWPL, WPK.CDWPLD, ( SELECT LIUSER FROM DBASIF.IC_USER WHERE CDUSER=WPK.CDWPLD) LIWPLD, WPO.CDWPLR, IMP.CDORG, IMP.CDIMPU, IMP.LIIMPU, IMP.TYIMPU FROM DBASIF.FD_PRJ PRJ, DBASIF.FD_WPK WPK , DBASIF.FD_IMP IMP, DBASIF.FF_WPO WPO WHERE PRJ.CDORG= 'A0015' AND PRJ.CDPLFM = 'TGS_ELECTRIFICATION' AND WPK.CDPRJ =PRJ.CDPRJ AND IMP.CDPRJ =WPK.CDPRJ AND IMP.CDWPK =WPK.CDWPK AND WPO.CDORG(+) =WPK.CDORG AND WPO.CDWPL(+) =WPK.CDWPL) , LISTE_FORECAST AS ( SELECT IMP.CDORG, IMP.CDPRJ, IMP.CDWPK, IMP.LIPRJ, IMP.LIWPK, IMP.TYIMPU, IMP.CDIMPU, IMP.LIIMPU, IMP.INVALSIM, IMP.INVALWPM, IMP.CDWPL, IMP.LIWPL, IMP.CDWPLD, IMP.LIWPLD, IMP.CDWPLR, TRG.CDRESPM, PLG.TYRESS, PLG.CDDEP, PLG.LIDEP, TRIM(PLG.CDMAT) CDMAT, ( SELECT MAT.LIMAT FROM DBASIF.HD_MAT MAT WHERE MAT.CDORG=PLG.CDORG AND MAT.CDMAT =PLG.CDMAT) LIMAT, PLG.CDPOSTE, PLG.CDCOMP, PLG.CDSECT, PLG.NULIGNE, PLQ.DTMOISCO, PLQ.QTPREV, PLQ.QTHPREV, ( SELECT QTPREV FROM DBASIF.FF_PLQ_MAT_V WHERE CDORG =PLQ.CDORG AND CDMAT =PLG.CDMAT AND DTMOISCO =PLQ.DTMOISCO) QTPREV_TOT FROM LISTE_IMPUTATION IMP, DBASIF.FF_PLG PLG, DBASIF.FF_PLQ PLQ, DBASIF.FD_TRG TRG WHERE PLG.CDORG =IMP.CDORG AND PLG.TYIMPU =IMP.TYIMPU AND PLG.CDIMPU =IMP.CDIMPU AND PLG.TYLIGNE ='3' AND TRIM(PLG.NULIWPDRI) IS NULL AND TRIM(PLG.NULIWPDSA) IS NULL AND PLQ.CDORG =PLG.CDORG AND PLQ.TYIMPU =PLG.TYIMPU AND PLQ.CDIMPU =PLG.CDIMPU AND PLQ.NULIGNE =PLG.NULIGNE AND PLQ.DTMOISCO >'201402' AND TRG.CDORG =PLG.CDORG AND TRG.CDPOSTE =PLG.CDPOSTE AND PLQ.DTMOISCO<('201402'+200)) SELECT CASE WHEN TYLIGNE='DEP' THEN '6' WHEN TYRESS ='3' AND TRIM(CDMAT) IS NOT NULL THEN '5' WHEN TYRESS ='3' AND TRIM(CDMAT) IS NULL THEN '4' WHEN TYRESS IN ('1', '2') AND QTPREV_TOT>1.16 THEN '3' WHEN TYRESS ='2' AND QTPREV_TOT<=1.16 THEN '2' ELSE '1' END TYPE_AFF, CDPRJ, CDWPK, LIPRJ, LIWPK, INVALSIM, INVALWPM, CDWPL, LIWPL, CDWPLD, LIWPLD, CDWPLR, CDRESPM, TYIMPU, CDIMPU, LIIMPU, TYRESS, CDDEP, LIDEP, CDMAT, CASE WHEN TYRESS ='3' AND TRIM(CDMAT) IS NULL THEN CDPOSTE ELSE LIMAT END LIMAT, CDPOSTE, CDCOMP, CDSECT, NULIGNE, DTMOISCO, QTPREV, QTHPREV, QTPREV_TOT FROM ( SELECT 'FOR' TYLIGNE, CDPRJ, CDWPK, LIPRJ, LIWPK, INVALSIM, INVALWPM, CDWPL, LIWPL, CDWPLD, LIWPLD, CDWPLR, CDRESPM, TYIMPU, CDIMPU, LIIMPU, TYRESS, CDDEP, LIDEP, CDMAT, LIMAT, CDPOSTE, CDCOMP, CDSECT, NULIGNE, DTMOISCO, QTPREV, QTHPREV, QTPREV_TOT FROM LISTE_FORECAST) the script : $conn = oci_connect('hr', 'welcome', 'localhost/XE'); $stid = oci_parse($conn, 'see query on top'); oci_execute($stid); $nrows = oci_fetch_all($stid); => take all time Expected result: ---------------- execution time : 1 sec max (like in PHP 4.4) Actual result: -------------- execution time : 16 ~ 18 seconde for this case (can be more) -- Edit bug report at https://bugs.php.net/bug.php?id=67002&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=67002&r=trysnapshot54 Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=67002&r=trysnapshot55 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=67002&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=67002&r=fixed Fixed in release: https://bugs.php.net/fix.php?id=67002&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=67002&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=67002&r=needscript Try newer version: https://bugs.php.net/fix.php?id=67002&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=67002&r=support Expected behavior: https://bugs.php.net/fix.php?id=67002&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=67002&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=67002&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=67002&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=67002&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=67002&r=dst IIS Stability: https://bugs.php.net/fix.php?id=67002&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=67002&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=67002&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=67002&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=67002&r=mysqlcfg

« previous php.bugs (#185025) next »