PHP 4.0 Bug #5871: Connection gets lost
| From: | Oliver dot Reiniger at promatis dot de | Date: | Mon, 31 Jul 2000 11:57:23 +0000 |
| Subject: | PHP 4.0 Bug #5871: Connection gets lost | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-27027@lists.php.net to get a copy of this message | ||
From: Oliver.Reiniger@promatis.de
Operating system: Sun Solaris 2.7
PHP version: 4.0.1pl2
PHP Bug Type: Oracle related
Bug description: Connection gets lost
Using the script given below once a second, everything is working fine, but when we simulate a high
load on the server (pressing the reload-button as often as possible) connection to ORACLE breaks up.
PHP says: Error on OCIExcute (ORA-03114) you are not longer connected to ORACLE.
Examining the error-log of Apache I've found another ORACLE Error: failed to rollback
outstanding transactions!: ORA-12571: TNS:packet writer failure.
Trace-Files of ORACLE-Database give no hint.
When the error occurs the script cannot be executed any more. Restarting Apache the script is
executed but the error is reproducable. Rebooting the whole box, the error cannot be reproduced for
about two or three days uptime, but comes back afterwards.
Avoiding the PHPLIB-Objects using a plain script with OCILogon, OCIParse, OCIExecute, OCIFetch,
OCILogoff seems to be stable but perhaps it's just using less execution time and space on the
server (cannot rely on that).
This is what we're using:
- Apache/1.3.12 (Unix) ApacheJServ/1.1.2 PHP/4.0.1pl2 PHPLib 7.2c
- Skript:
-------------------------------------8<----------------------------------------------------------------
<?php
/*
* PROMATIS AG O.Reiniger, 26.07.2000
*
*/
//
// Include necessary PHP-Library
//
include("db_oci8.inc");
//
// Define a new DB-Connection-Class using PHP_LIB
//
class OO_DB_Connect extends DB_Sql {
var $ClassName = "OO_DB_Connect";
var $Database = "ORCL";
var $User = "scott";
var $Password = "tiger";
}
//
// Instanciate Object of DB-Connection-Clss
// (connect should be done now)
//
$q = new OO_DB_Connect;
//
// Execute Query
//
$query = "Select bezeichnung from rubriken";
$q->query($query);
//
// Fetch the results and print a table containing it's content
//
echo "<TABLE>";
echo "<TR>";
$j = 0;
while ($q->next_record()) {
$j ++;
if(($j % 10) == 0) {
echo "</TR>";
echo "<TR>";
}
echo "<TD>";
echo $q->f("bezeichnung");
echo "</TD>";
}
echo "</TR>";
echo "</TABLE>";
?>
------------------------------------------------------------>8----------------------------------------------------------------
+ PHP-Config:
---------------------------------------------------------8<-------------------------------------------------------------------
./configure' '--prefix=/data/php4'
'--with-apxs=/data/apache_bms2/bin/apxs'
'--with-oci8=/ora8/app/oracle/product/8.1.6/' '--enable-trans-sid'
'--with-xml'
------------------------------------------------------------>8----------------------------------------------------------------
+ ORACLE 8.1.6 Enterprise Edition
+ OCI 8.1.0.0.0