|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2021-05-03 12:24 UTC] cmb@php.net
-Status: Open
+Status: Feedback
-Assigned To:
+Assigned To: cmb
[2021-05-03 12:24 UTC] cmb@php.net
[2021-05-16 04:22 UTC] php-bugs at lists dot php dot net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 07:00:01 2025 UTC |
Description: ------------ In the code below, if the visible IE is closed, whether by script or by the user, the bug manifests itself. What will happen is that there will be a sequence of (ReadyState) 4's displayed while IE is extant. When IE is closed, "Exiting" should be printed, but what happens is that a sequence of ReadyState=0's is printed, which is a bug. The bug only happens if there are no instances of IE when the script is run. The second instance of $ie has to be 'static' Csaba Gabor from Vienna Reproduce code: --------------- <?php // IE being closed doesn't terminate script // if there are no IE instances on startup $ie = new COM("InternetExplorer.Application"); $ie->visible = true; $ie->Navigate2 ("about:blank"); $ie2 = new COM("InternetExplorer.Application"); try { while ($ie->ReadyState>=0) { print $ie->ReadyState; com_message_pump(200); } } catch (com_exception $e) {} print "Exiting"; ?> Expected result: ---------------- I expect to see a sequence of 4s until I close IE, and then I expect to see Exiting printed Actual result: -------------- A sequence of 4s is printed, but when I close IE a sequence of 0s is printed which doesn't terminate till I use the windows task manager (ctrl+alt+delete) to kill the iexplore process. (One could also use ctrl+C in the Cmd window, but that leaves a hidden IE instance, so the bug won't show itself next time around, until the IE is removed). The bug manifests itself without user actions if $ie->Quit(); is inserted right above the 'try' line If there is already an instance of IE in existence, then the bug does not happen. The bug will also show itself if the '$ie2' line is replaced with: ieStatic(); function ieStatic() { static $ie; $ie = new COM("InternetExplorer.Application"); }