2011-05-11 5 views
1

내 응용 프로그램이 Symfony 작업 내에서 막대한 일괄 처리를 실행하고 모든 PHP 오류 및 잡히지 않은 예외에 대한 알림을 받고 싶습니다.symfony 작업의 sfErrorNotifierPlugin

그래서 sfErrorNotifierPlugin을 시도하고 웹 컨텍스트 (브라우저에서 응용 프로그램에 액세스)에서 훌륭하게 작동합니다. 문제는 심포니 작업에서 작동하지 않는다는 것입니다.

작업에서 작동하게 할 수있는 방법이 있습니까?

답변

0

귀하의 도움에 감사드립니다. @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 메서드를 재정 문제를 해결했다.

3

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에서 설정을 사용) 제대로 실행하는 응용 프로그램 매개 변수를 필요가 있음을 유의하십시오.

+0

에서이 멋지다. 웹 응용 프로그램에 표시 될 수 있도록 콘솔에 인쇄 된 메시지를 읽을 수있는 다른 sfNotifier가 있습니까? 이것은 실제로 http://stackoverflow.com/questions/6085939/display-output-from-a-symfony-task-on-a-template에 대한 답일 수 있습니다. – Prasad

3

는 ProjectConfiguration.class.php

public function setup() 
    { 
    if ('cli' == php_sapi_name()) $this->disablePlugins('sfErrorNotifierPlugin'); 
    }