40 $this->splash =
new Splash();
43 self::GAUGE_PROCESSES * count(
$bearsamppBins->getServices() ) + self::GAUGE_OTHERS,
48 $bearsamppWinbinder->setHandler( $this->splash->getWbWindow(), $this,
'processWindow', 2000 );
49 $bearsamppWinbinder->mainLoop();
50 $bearsamppWinbinder->reset();
89 $name .=
' (' . $service->getName() .
')';
91 $this->splash->incrProgressBar();
100 $this->splash->incrProgressBar();
106 $this->splash->setTextLoading(
'Completing shutdown...');
107 if (strtoupper(substr(PHP_OS, 0, 3)) ===
'WIN') {
118 $bearsamppWinbinder->destroyWindow($window);
133 global $bearsamppWinbinder;
136 $startTime = microtime(
true);
138 Util::logTrace(
'Starting PHP process termination (excluding PID: ' . $excludePid .
')');
140 $targets = [
'php-win.exe',
'php.exe'];
143 if (microtime(
true) - $startTime > $timeout) {
144 Util::logTrace(
'Process termination timeout exceeded, continuing with remaining operations');
151 if (in_array($exe, $targets) && $pid != $excludePid) {
160 $splash->setTextLoading(
'Final cleanup...');
164 Util::logTrace(
'Initiating self-termination for PID: ' . $currentPid);
168 Util::logTrace(
'Self-termination via Vbs::killProc failed, using alternative method');
170 }
catch (\Exception $e) {
171 Util::logTrace(
'Exception during self-termination: ' . $e->getMessage());
176 if ($window && $bearsamppWinbinder) {
179 $bearsamppWinbinder->destroyWindow($window);
180 }
catch (\Exception $e) {
181 Util::logTrace(
'Exception during window destruction: ' . $e->getMessage());
186 if (microtime(
true) - $startTime > $timeout * 1.5) {