Восстановление из исключений в PHP / Symfony

я сделал простой инструмент командной строки с Symfony2, который вызывает службу, которая бросает UniverseException в случае ошибки. Вроде как это;

# /src/AppBundle/Command/UniverseCommand.php
class UniverseCommand extends ContainerAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
if ( 1 == 2 )
throw new UniverseException('Strange things are afoot');
}
}

Я также добавил CommandExceptionListener который может восстановить мое приложение, если MyAppBundleException брошен

# /src/AppBundle/EventListener/CommandExceptionListener.php
class CommandExceptionListener
{
public function onConsoleException(ConsoleExceptionEvent $event)
{
if ($exception instanceof UniverseException) {
// Reboot the universe
// Continue existence..?
}
}
}

Работает отлично!

Но теперь я хотел бы запустить команду как демон, используя daemonizable-команда расслоение. Если моя служба выдает исключение, выполнение останавливается, и это создает ужасного демона!

Мое приложение уже обработало этот тип исключения. Есть ли способ восстановиться и позволить моему демону продолжить работу?

РЕДАКТИРОВАТЬ:
Я пытался добавить try/catch в команде вот так ..

# /src/AppBundle/Command/UniverseCommand.php
class UniverseCommand extends ContainerAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
try{
if ( 1 == 2 )
throw new UniverseException('Strange things are afoot');
}catch(\Exception $e){
echo 'The universe behaved badly but I rebooted it.';
}
}
}

Это ловит исключение, и демон продолжается! Но теперь, конечно, мой слушатель событий не запускается, и исключение не обрабатывается должным образом.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]