RE: [PHP-WIN] Excel not closing after using it via COM

From: Date: Fri, 26 Apr 2002 19:55:15 +0000
Subject: RE: [PHP-WIN] Excel not closing after using it via COM
Groups: php.windows 
Request: Send a blank email to php-windows+get-13334@lists.php.net to get a copy of this message
Son of a .... Yep. After splitting up the DisplayAlerts line into two lines, (and putting in an unset($application)) Excel is no longer resident after the script exits. Is temporary-object behaviour supposed to happen in cases like $obj->another->func(), or is this an unintended side-effect of something else? Does PHP usually create temp-objects when referencing $obj->another, or is that behaviour only part of the COM subsystem? Sorry for asking questions that are probably obvious, but i'm not really too familiar with the details of PHP's object handling. --- Scott Hurring Systems Programmer EAC Corporation ScottH@eac.com Voice: 201-462-2149 Fax: 201-288-1515 > -----Original Message----- > From: Alan Brown [mailto:abrown@pobox.com] > Subject: Re: [PHP-WIN] Excel not closing after using it via COM > > There is a missing "Release" call in the COM code when > temporary objects are > created for a construct such as > > $excel->application->DisplayAlerts = False; > > This is not as visible a problem with an inproc server as > with a localserver > such as Excel. > > It is fairly easy to work around this (until I get a real fix > into the base) > by breaking it up thus: > > $application = $excel->application; > $application->DisplayAlerts = False; > > This has to be done in two places in the example I saw. > However I note that > if you put in a logic error such as this: > $book = $workbooks->Open($file); > $sheet = $books->Worksheets(1); > > After the exception a copy of Excel is still left running. I > wiill look more > at this over the weekend and test my Release() call on the > temporary object. > It seems to work, but I fear that it will break something else.... > > Alan.

« previous php.windows (#13334) next »