ID: 32099
User updated by: terryoh at wins21 dot com
Reported By: terryoh at wins21 dot com
-Status: Feedback
+Status: Open
Bug Type: COM related
Operating System: Windows 2000 Server
PHP Version: 4.3.8
New Comment:
I downloaded the latest php.
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
After upgrading the php module, I tried the same test. But the result
was same. Memory and the count of the handles were increased. After the
session.gc_maxlifetime(php.ini), the result was same.
[Presumption]
I read something about zend engine on a webpage(I can't remeber the web
address exactly), it is that the zend engine doesn't release database
connection to reuse exceptionally. It might be this process causes
trouble between ADO and Zend engine.
Previous Comments:
------------------------------------------------------------------------
[2005-02-25 14:20:25] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
------------------------------------------------------------------------
[2005-02-25 01:52:36] terryoh at wins21 dot com
Description:
------------
Today, my apache server stopped service. So I tested whether the apache
daemon was ok or not. It worked, because the telnet 80 connection(like
C:/telnet.exe 127.0.0.1 80) was successful. But I could not open any
php pages on the internet explorer.
I checked the memory with windows task manager and I found something
strange. The allocated memory for apache was almost 1GB(998MB) and the
count of the handles was almost 40000(39890).
Finally I found that it was ADO-PHP problem. I could see memory and the
count of handles increased when opening database and closing it
repeatedly(1 try/1 second for an hour). Especially the handles were
never decreased.
[Steps]
1) Register any ODBC DSN(driver=SQL Server)in the control panel.
2) In PHP.INI, set the key name(odbc.default_db) with the DSN;user
ID;password.
3) Start an apache service.
4) Open a test page(in the reproduce code section)in your web browser.
5) Refresh the test page repeatedly once a second.
6) Open windows task manager. If you can not see handle column on the
process tab, add it(Menu->View->Column Selection->Handle).
7) After 1 minute or later, you can see the count of apache handle
increase like 400->401->402->403.... Also you can see the memory
increase.
Reproduce code:
---------------
<?php
$ConnectionString = ini_get('odbc.default_db');
$AdoConn = new COM("ADODB.Connection");
$AdoConn->Open($ConnectionString);
$AdoConn->Close();
unset($AdoConn);
?>
***** Web Server : Apache 1.3.28
***** PHP : 4.3.8
***** OS : Windows 2000 Server
***** DBMS : MSSQL2000 Enterprise Edition
***** OTHERS : MDAC 2.8
Expected result:
----------------
Windows Task Manager(Process Tab)
Image name Memory Handle
Apache.exe 10,840KB 200 11:00 AM
Apache.exe 10,857KB 201 11:02 AM
Apache.exe 10,867KB 202 11:04 AM
Apache.exe 10,867KB 202 11:06 AM
Apache.exe 10,867KB 202 11:08 AM
Apache.exe 10,867KB 202 11:10 AM
Apache.exe 10,867KB 202 11:12 AM
....
Actual result:
--------------
Windows Task Manager(Process Tab)
Image name Memory Handle
Apache.exe 10,840KB 200 11:00 AM
Apache.exe 10,857KB 201 11:02 AM
Apache.exe 10,867KB 202 11:04 AM
Apache.exe 10,877KB 203 11:06 AM
Apache.exe 10,886KB 204 11:08 AM
Apache.exe 10,899KB 205 11:10 AM
Apache.exe 10,910KB 206 11:12 AM
....
Apache.exe 998MB 39890
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32099&edit=1