|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2002-08-28 12:38 UTC] dwt at myrealbox dot com
[2002-09-19 09:30 UTC] jadair at adairservices dot net
[2002-10-02 08:02 UTC] phanto@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 22 07:00:01 2025 UTC |
When writing applications instancing COM objects I always faced the problem of the instanced program not terminating correctly although everything else worked fine. In fact the process had to be killed manually by using the task manager. Browsing some messageboards I found out I was not the only one and began to investigate the problem. I finally was able to isolate the cause for this peculiar behaviour to be illustrated by the sample code below: <?php //Accessing arrays by retrieving elements via function ArrayName(Index) works, but certainly is neither efficient nor good style $excel=new COM("Excel.Application"); $excel->sheetsinnewworkbook=1; $excel->Workbooks->Add(); $book=$excel->Workbooks(1); $sheet=$book->Worksheets(1); $sheet->Name="Debug-Test"; $book->saveas("C:\\debug.xls"); $book->Close(false); unset($sheet); unset($book); $excel->Workbooks->Close(); $excel->Quit(); unset($excel); //Accessing arrays as usual (using the [] operator) works, buts leads to the application not being able to terminate by itself $excel=new COM("Excel.Application"); $excel->sheetsinnewworkbook=1; $excel->Workbooks->Add(); $excel->Workbooks[1]->Worksheets[1]->Name="Debug-Test"; $excel->Workbooks[1]->saveas("C:\\debug.xls"); $excel->Workbooks[1]->Close(false); $excel->Workbooks->Close(); $excel->Quit(); unset($excel); ?> The sample code performs the same action twice and each time the file is properly created. Yet for some mysterious reason the instanced excel process won't terminate once you've accessed an array the way most programmers (especially those who do a lot of oop in c++) do!