Edit report at http://bugs.php.net/bug.php?id=51610&edit=1
ID: 51610 Updated by: s...@php.net Reported by: marioroy at verizon dot net Summary: 1 second+ needed for OCI8 versus PDO/oci to open/close connection and exit Status: Wont fix Type: Bug Package: OCI8 related Operating System: Linux & Snow Leopard PHP Version: 5.3SVN-2010-04-20 (snap) Assigned To: sixd New Comment: The PHP OCI8 code changes in question have been in production for two years. They were introduced to support Database Resident Connection Pooling and FAN for scalability in web apps. The dominant use cases for SQL*Plus and PHP are very different. Previous Comments: ------------------------------------------------------------------------ [2010-06-17 15:29:25] chris at leaflock dot net I filed a duplicate bug, but I noticed something unique; It doesn't happen with Oracle 10.2.0.3. I'm pretty unhappy about this, what is the benefit and/or requirement for this behavior, and why does it not happen in 10.2.0.3? Oracle's own SQLPlus doesn't display this behavior. I never thought I'd see the day when SQLPlus could do something faster for me than PHP. ------------------------------------------------------------------------ [2010-04-22 00:33:09] marioroy at verizon dot net Thank you for the feedback. ------------------------------------------------------------------------ [2010-04-21 18:31:34] s...@php.net This is expected. There is a shutdown cost at process termination from closing a timer thread needed by the connection rearchitecture of OCI8 1.3. Most deployments either do not start and stop PHP processes frequently, or are not sensitive to the time between completing the work of the script and the termination of the process. It's possible that PDO_OCI may be changed in future and might get the same behaviour. ------------------------------------------------------------------------ [2010-04-20 05:24:44] marioroy at verizon dot net Description: ------------ Is this normal to see the native OCI8 1.3.5 or later requiring additional time to run code snippet shown below when accessing Oracle 10.2.0.4. I'm seeing this at work as well (SUSE Linux). Therefore, I have stayed with OCI8 1.2.5 for the moment. Notice how the time is the same when using the PDO/OCI interface. Test script: --------------- # Native OCI8 Performance: # # PHP 5.2.14 201004191430, OCI8 1.2.5: ~ 0.15 seconds ;this is nice # # PHP 5.3.3 201004191430, OCI8 1.2.5: ~ 0.25 seconds ;takes 0.1 extra here # PHP 5.3.3 201004191430, OCI8 1.3.5: ~ 1.20 seconds ;slowness begins when # PHP 5.3.3 201004191430, OCI8 1.4.1: ~ 1.20 seconds ;script exits for 1.3.5+ # PHP 5.3.3 201004191430, OCI8 1.4.2: ~ 1.20 seconds <?php $conn = oci_connect('hr', 'hr', '//localhost:1521/mac10g'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } oci_close($conn); exit; ?> # PDO/OCI Performance: # # PHP 5.2.14 201004191430, OCI8 1.2.5: ~ 0.15 seconds ;very fast # # PHP 5.3.3 201004191430, OCI8 1.2.5: ~ 0.15 seconds ;same as PHP 5.2.14 :) # PHP 5.3.3 201004191430, OCI8 1.3.5: ~ 0.15 seconds ;very happy to see this # PHP 5.3.3 201004191430, OCI8 1.4.1: ~ 0.15 seconds ;with 1.3.5+ # PHP 5.3.3 201004191430, OCI8 1.4.2: ~ 0.15 seconds <?php try { $conn = new PDO('oci:dbname=127.0.0.1/mac10g', 'hr', 'hr'); } catch (PDOException $e) { trigger_error("Could not connect to database: ". $e->getMessage(), E_USER_ERROR); } $conn = NULL; exit; ?> Expected result: ---------------- I'm hoping that PHP 5.3.2+ with OCI8 1.4.1+ can perform as fast as PHP 5.2.13 with OCI8 1.2.5 when using the native driver. This is why I have stayed with 1.2.5 at work. It wasn't until tonight that I saw the times the same via the PDO interface. That made my day. Actual result: -------------- The native OCI8 1.3.5+ requires extra time to open/close and exit. The time delta is 1 second for such a small code snippet. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51610&edit=1