내 응용 프로그램이 Symfony 작업 내에서 막대한 일괄 처리를 실행하고 모든 PHP 오류 및 잡히지 않은 예외에 대한 알림을 받고 싶습니다.symfony 작업의 sfErrorNotifierPlugin
그래서 sfErrorNotifierPlugin을 시도하고 웹 컨텍스트 (브라우저에서 응용 프로그램에 액세스)에서 훌륭하게 작동합니다. 문제는 심포니 작업에서 작동하지 않는다는 것입니다.
작업에서 작동하게 할 수있는 방법이 있습니까?
내 응용 프로그램이 Symfony 작업 내에서 막대한 일괄 처리를 실행하고 모든 PHP 오류 및 잡히지 않은 예외에 대한 알림을 받고 싶습니다.symfony 작업의 sfErrorNotifierPlugin
그래서 sfErrorNotifierPlugin을 시도하고 웹 컨텍스트 (브라우저에서 응용 프로그램에 액세스)에서 훌륭하게 작동합니다. 문제는 심포니 작업에서 작동하지 않는다는 것입니다.
작업에서 작동하게 할 수있는 방법이 있습니까?
귀하의 도움에 감사드립니다. @Maerlyn, 내 해결책은 당신과 크게 다릅니다.
protected function doRun(sfCommandManager $commandManager, $options)
{
try
{
return parent::doRun($commandManager, $options);
}
catch (Exception $e)
{
$this->dispatcher->notifyUntil(new sfEvent($e, 'application.throw_exception'));
throw $e;
}
}
이 문제가 해결 :
나는 나의 작업에이 방법을 doRun 메서드를 재정 문제를 해결했다.sfTask
에는 웹 인터페이스처럼 예외 처리가 없지만이를 해결할 수 있습니다. 궁극적으로 던져진 예외는 sfErrorNotifier::notifyException
으로 전달됩니다.
큰 시도-catch 블록에서 작업의 execute
방법을 랩 :
public function execute($arguments = array(), $options = array())
{
try {
//your code here
}
catch(Exception $e) {
sfErrorNotifier::notifyException($e); //call the notifier
throw $e; //rethrow to stop execution and to avoid problems in some special cases
}
}
그것 (app.yml에서 설정을 사용) 제대로 실행하는 응용 프로그램 매개 변수를 필요가 있음을 유의하십시오.
는 ProjectConfiguration.class.php
public function setup()
{
if ('cli' == php_sapi_name()) $this->disablePlugins('sfErrorNotifierPlugin');
}
에서이 멋지다. 웹 응용 프로그램에 표시 될 수 있도록 콘솔에 인쇄 된 메시지를 읽을 수있는 다른 sfNotifier가 있습니까? 이것은 실제로 http://stackoverflow.com/questions/6085939/display-output-from-a-symfony-task-on-a-template에 대한 답일 수 있습니다. – Prasad