/** * Creates an event loop which takes orders from the parent process and executes * them in runtime mode. * * @return void */ public function handleRequest() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); $objectManager = $this->bootstrap->getObjectManager(); $systemLogger = $objectManager->get('TYPO3\\FLOW3\\Log\\SystemLoggerInterface'); $systemLogger->log('Running sub process loop.', LOG_DEBUG); echo "\nREADY\n"; try { while (TRUE) { $commandLine = trim(fgets(STDIN)); $systemLogger->log(sprintf('Received command "%s".', $commandLine), LOG_INFO); if ($commandLine === "QUIT\n") { break; } $request = $objectManager->get('TYPO3\\FLOW3\\Cli\\RequestBuilder')->build($commandLine); $response = new \TYPO3\FLOW3\Cli\Response(); if ($this->bootstrap->isCompiletimeCommand($request->getCommand()->getCommandIdentifier())) { echo "This command must be executed during compiletime.\n"; } else { $objectManager->get('TYPO3\\FLOW3\\Mvc\\Dispatcher')->dispatch($request, $response); $response->send(); $this->emitDispatchedCommandLineSlaveRequest(); } echo "\nREADY\n"; } $systemLogger->log('Exiting sub process loop.', LOG_DEBUG); $this->bootstrap->shutdown('Runtime'); exit($response->getExitCode()); } catch (\Exception $exception) { $this->handleException($exception); } }
/** * Initializes the matching boot sequence depending on the type of the command * (runtime or compiletime) and manually injects the necessary dependencies of * this request handler. * * @param string $runlevel Either "Compiletime" or "Runtime" * @return void */ protected function boot($runlevel) { $sequence = $runlevel === 'Compiletime' ? $this->bootstrap->buildCompiletimeSequence() : $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); $this->objectManager = $this->bootstrap->getObjectManager(); $this->dispatcher = $this->objectManager->get('TYPO3\\FLOW3\\Mvc\\Dispatcher'); }
/** * Handles a command line request * * @return void */ public function handleRequest() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); }
/** * Boots up FLOW3 to runtime * * @return void */ protected function boot() { $sequence = $this->bootstrap->buildRuntimeSequence(); $sequence->invoke($this->bootstrap); }