[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-windows
Subject:    [PHP-WIN] COM Dlls Not Unbinding From Process
From:       81.159.46.175
Date:       2005-12-31 15:14:18
Message-ID: C2.68.08921.E40A6B34 () pb1 ! pair ! com
[Download RAW message or body]

Hi All,

I am doing a lot of PHP work with COM.  The system uses php 4.3.3.3 and 
php is being driven via FCGI from our own web server (TAG).

We create an instance of an in-process COM server using the following 
technique:

  function GetFactory()
  {
   static $obj;
   static $objSet = 0;
   if($objSet==0)
   {
    $obj=new COM("TPN_Obj.JDCom_Factory");
    $objSet=-1;
   }
   return $obj;
  }

The returned COM object is then used as a factory to all our other COM 
objects.

The snag is that the binding to the COM dll is not being released at the 
end of script execution.  This is visible using ProcessExplorer from 
SysInternals.

If I call com_release the returned ref-count is zero.  To ensure that 
php's garbage collector was not the culprit, I tried repeatedly calling 
com_release at the end of the script - no change.

The upshot of this issue is that each PHP process in the FCGI process 
pool gradually gets bigger as more and more dlls are bound :-(

Any ideas are welcome, I have gone through the php source but cannot 
quite figure the problem.  A C level fix is fine for us as we are going 
to move over to using a home complied version of 4.4.1 asap.

Thanks!

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic